INVALID_IDP_RESPONSE: предоставленные идентификационные данные неверны или устарели - PullRequest
1 голос
/ 19 октября 2019

Я использую свою электронную таблицу в качестве интерфейса администратора для моего приложения Firebase, где я могу авторизовать некоторые пользовательские транзакции в приложении. В электронной таблице используются сценарии приложений Google и облачные функции.

. Я могу отправлять данные в электронную таблицу и на свой сервер и обратно, а теперь необходимо заблокировать доступ к облачным функциям HTTP-URL для авторизованных пользователей. с атрибутом admin в пользовательских утверждениях, установленным в true.

Для этого я надеюсь отправить маркер OAuth пользователя, полученный из API скриптов Google Apps (ScriptApp.getOAuthToken ()), как часть полезной нагрузки запроса и использовать firebaseМетод API rest https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=[API_KEY] для получения токена идентификатора пользователя и других учетных данных для проверки и авторизации пользователя-администратора и транзакции.

   const credentials = {
        postBody: `id_token=${token}&providerId=google.com`,
        requestUri: oAuthCredentials.web.redirect_uris[0],
        returnIdpCredential: false,
        returnSecureToken: true
    }
    APIRequest(IdentityUrls.signInWithOAuth, {
        headers: {
            'Content-Type': "application/json"
        },
        method: 'POST',
        body: JSON.stringify(credentials)
    }, (error, res) => {
        ...// perform actions here
    })

Проблема в том, что я продолжаю получать INVALID_IDP_RESPONSE : предоставленные идентификационные данные неверны или устарели. Я не уверен, почему это так, и был бы признателен за помощь

1 Ответ

0 голосов
/ 29 октября 2019

Я наконец понял это. Сейчас я отправляю токен OAuth, как описано в вопросе, на сервер и отправляю запрос POST к конечной точке информация токена с полезной нагрузкой access_token: OAuth token. Это возвращает ответ с электронной почтой пользователя, email_verified, expiry_date и т. Д. Затем, используя эту электронную почту пользователя, я могу получить userRecord в Firebase Admin SDK, который предоставляет атрибут customClaims. Подробнее о решении здесь

...