Авторизация пользовательских сервисов Google

тоящий момент в gmail appscript у нас нет никакой возможности добавить поле типа пароля.

Служба Gmail Card Service для дополнения имеет очень хорошую возможность показать что-либо в нем. Мы можем интегрироваться с любым приложением, которое имеет базовый API REST. Нам нужна аутентификация для того, что обычно требует поля типа пароля.

Любая работа вокруг, чтобы показать поле типа пароля?

Ответы на вопрос(2)

Но мы можем построить взломать его. Надеюсь пароль нужен только в регистрационных формах. Таким образом, мы можем создать регистрационную форму с использованием HTML, которая может быть обработана с помощью действия авторизации.

CardService.newAuthorizationAction().setAuthorizationUrl(loginUrl)

Здесь разместите регистрационный HTML на веб-сервере и передайте этот URL как «loginUrl» в приведенном выше фрагменте. Мы должны предоставить AuthorizationAction для кнопки регистрации / регистрации. Таким образом, когда пользователь нажимает на эту кнопку, запускается новая всплывающая страница, он сообщает имя пользователя, пароль и т. Д., А затем мы можем закодировать все данные формы и передать их родительскому дополнению Gmail с помощью перенаправить его на URL перенаправления скрипта, который вы можете создать надстройку. Как только произойдет перенаправление на URL-адрес скрипта, в нашем дополнительном коде будет обратный вызов, и вы сможете получить поля формы, которые были закодированы с HTML-страницы регистрации.

function generateNewStateToken(callbackName, payload) {
        return ScriptApp.newStateToken()
        .withMethod(callbackName)
        .withArgument("payload", JSON.stringify(payload))
        .withTimeout(3600)
        .createToken();
    }

function getRedirectURI() {
    return "https://script.google.com/macros/d/" + ScriptApp.getScriptId() + "/usercallback";
  }

var state = generateNewStateToken("registerCallback", {"signup": true});
var reg_url = <reg_url> + "?redirect_uri=" + getRedirectURI() + "&state=" + state;

function registerCallback(cbResp) {
 // to access payload which passed in state token: cbResp.parameter.payload;

// in the html serialize all the form fields or data which you want to pass to plugin as query params like: <redirect_uri>?form_data=<encoded_data>&state=<state>

//Note: here the registration HTML page should parse the URL to get the state & redirect_uri from URL.

// to access form_data: cbResp.parameter.form_data

}

Я надеюсь, что это поможет вам. Вот как мы сейчас выполняем поток регистрации / входа.

Ваш ответ на вопрос