Войти через OAuth2 через firebase rest api получаю Отклонено - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь войти в систему с помощью OAuth2 через API FireBase Rest из сценария Google Apps.Я использую библиотеку apps-script-oauth2 и получил токен доступа с service.getAccessToken() ( см. Документацию getAccessToken ).

Однако, когда я публикую вконечная точка аутентификации со следующим кодом:

    var oAuthService= getOAuthService();
    const createUserWithOAuthUrl = 'https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyAssertion?key=' + <API_KEY>
    const accessToken = oAuthService.getAccessToken()
    Logger.log(accessToken)
    const requestUri = 'https://script.google.com/macros/d/' + SCRIPT_ID + '/usercallback'
    const payload = JSON.stringify({"postBody": "access_token=" + accessToken + "&providerId=google.com","requestUri":requestUri,"returnIdpCredential":true,"returnSecureToken":true})
    Logger.log(payload)
    const result = UrlFetchApp.fetch(createUserWithOAuthUrl, {
        method: 'post',
        contentType: 'application/json',
        muteHttpExceptions: true,
//        headers: {
//          Authorization: 'Bearer ' + accessToken
//        },
        payload : payload
    });

Я получаю эту ошибку:

"error": {
    "code": 400,
    "message": "INVALID_IDP_RESPONSE : Failed to fetch resource from https://www.googleapis.com/oauth2/v1/userinfo, http status: 401, http response: {\n  \"error\": {\n    \"code\": 401,\n    \"message\": \"Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.\",\n    \"status\": \"UNAUTHENTICATED\"\n  }\n}\n",

Процесс OAuth, кажется, идет хорошо, когда я прохожу процесс выбора учетной записи / обзора областей иполучите авторизованное приглашение.

Я следовал за firebase rest auth api docs , и похоже, что я делаю это правильно, поэтому я не понимаю, почему его отклоняют,Какие-нибудь мысли?Есть ли способ проверить правильность моего access_token?Я запустил консоль, и это, безусловно, выглядит как токен.

1 Ответ

0 голосов
/ 04 апреля 2019

ОК, так что я только что понял, это было связано с областями действия.

Обычно во время входа в firebase с помощью процесса OAuth выполняется автоматический вызов API https://www.googleapis.com/oauth2/v1/userinfo. Для этого требуются следующие области:

https://www.googleapis.com/auth/userinfo.email
https://www.googleapis.com/auth/userinfo.profile

Я полагаю, что firebase хотел, чтобы определенные данные пользователя были добавлены в учетную запись пользователя. Не уверен, почему он жаловался на токены, а не на прицелы, определенно меня там выгнали!

...