API REST Firebase Auth: при входе через OAuth через Twitter выдается ошибка 32 «Не удалось аутентифицировать вас» - PullRequest
0 голосов
/ 20 января 2020

Я пишу функцию в Node.js для входа пользователя в Firebase с использованием учетных данных Twitter через REST API (запросы выполняются с использованием библиотеки request ). Я могу использовать учетные данные Twitter, чтобы опубликовать твит, но при попытке войти в Firebase с помощью /accounts:signInWithIdp возвращается следующая ошибка:

{ error: 
   { code: 400,
     message: 'INVALID_IDP_RESPONSE : Failed to fetch resource from https://api.twitter.com/1.1/account/verify_credentials.json?include_email=true, http status: 401, http response: {"errors":[{"code":32,"message":"Could not authenticate you."}]}',
     errors: [ [Object] ] } }

Это мой код:

loginWithOAuth = (idToken, postBody, onCompletion, onError) => {
    var form = {
        postBody: querystring.stringify(postBody),
        requestUri: 'request uri',
        returnIdpCredential: 'false',
        returnSecureToken: 'true',
    }
    request.post({
        url: 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=' + firebase_api_key,
        body: form,
        json: true
    }, (error, r, body) => {
        // ...
    });
}

где postBody имеет форму

{
    access_token: 'token',
    oauth_token_secret: 'token secret',
    providerId: 'twitter.com'
}

Мое приложение Twitter имеет разрешение на доступ к электронной почте пользователя. Я также внес в белый список requestUri в Firebase и Twitter. Восстановление моего приложения и пользовательских ключей не имеет значения.

Что мне не хватает?

1 Ответ

0 голосов
/ 20 января 2020

postBody не является строковым объектом, он закодирован по URL:

var form = {
    postBody: 'access_token=[TWITTER_ACCESS_TOKEN]&oauth_token_secret=[TWITTER_TOKEN_SECRET]&providerId=twitter.com',
    requestUri: 'request uri',
    returnIdpCredential: 'false',
    returnSecureToken: 'true',
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...