Firebase refre sh токен с токена Firebase ID - PullRequest
1 голос
/ 31 января 2020

Я знаю, что токен Firebase ID можно использовать для действий от имени пользователя. Но токен истекает через 1 час. Чтобы исправить это, документацию и этот пост Как использовать FireBase refreshToken для повторной аутентификации? вы можете предположительно повторно пройти аутентификацию с помощью команды REST здесь https://firebase.google.com/docs/reference/rest/auth/

Я не могу заставить это работать. Вот код Android Flutter для печати токена на logcat

FirebaseAuth.instance;.currentUser().then((FirebaseUser user) {
    if (user != null) {
        user.getIdToken(refresh: true).then((IdTokenResult token) {
             dbg.log('firebase TOKEN ' + token.token );
             dbg.log('firebase TOKEN authtime ' + token.authTime.toIso8601String() );
             dbg.log('firebase TOKEN expiration ' + token.expirationTime.toIso8601String() );
             dbg.log('firebase TOKEN issued at ' + token.issuedAtTime.toIso8601String() );
        });
    }
}).catchError((e) {
    dbg.log('fetch user ERROR: ' + e.toString());
});

Чтобы убедиться, что токен работает, вы можете добавить его в curl:

#!/bin/sh

TOKEN=<your token>

curl -H "Authorization: Bearer $TOKEN" \
https://firestore.googleapis.com/v1/projects/<your project>/databases/<your databases> | jq

Это работает. Но когда я пытаюсь получить refre sh токен:

#!/bin/sh

TOKEN=<your token>
WEB_API_KEY=<your web api key>

REFRESH_URL=https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken?key=${WEB_API_KEY}

ARGS='{"token":"'${TOKEN}'","returnSecureToken":true}'

echo $ARGS | jq

curl ${REFRESH_URL}  \
-H 'Content-Type: application/json' \
--data-binary ${ARGS} | jq

, я получаю следующую ошибку:

{
  "error": {
    "code": 400,
    "message": "INVALID_CUSTOM_TOKEN",
    "errors": [
      {
        "message": "INVALID_CUSTOM_TOKEN",
        "domain": "global",
        "reason": "invalid"
      }
    ]
  }
}

Я пропустил шаг?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...