Токен недействителен при подключении к Facebook с помощью Firebase в Flutter - PullRequest
1 голос
/ 01 марта 2020

Я подключаюсь к своей учетной записи Facebook во Flutter, вот код:

Future<String> signIn() async {

   final facebookLogin = FacebookLogin();
   final facebookLoginResult = await facebookLogin.logInWithReadPermissions(['email']);
   if (facebookLoginResult.status != FacebookLoginStatus.loggedIn)
     return null;
   final FacebookAccessToken myToken = facebookLoginResult.accessToken;
   if (myToken == null) return null;
   AuthCredential authCredential = FacebookAuthProvider.getCredential(accessToken: myToken.token);
   FirebaseAuth firebaseAuth = FirebaseAuth.instance;
   AuthResult authResult = await firebaseAuth.signInWithCredential(authCredential);
   IdTokenResult idToken = await authResult.user.getIdToken(refresh: true);

   return idToken.token != null ? idToken.token : null;
}

Соединение Facebook успешно установлено, и функция возвращает токен. Затем я пытаюсь использовать этот токен в своем python бэкэнде для получения сведений о пользователе, и я получаю ответ от Firebase:

{'error': {'code': 400, 'message': 'INVALID_ID_TOKEN', 'errors': [{'message': 'INVALID_ID_TOKEN', 'domain': 'global', 'reason': 'invalid'}]}}

Когда я использую токен из функции createUserWithEmailAndPassword и пытается прочитать пользователя подробности в моем python бэкэнде Я получаю правильный ответ от Firebase:

{'kind': 'identitytoolkit#GetAccountInfoResponse', 'users': ...}

вот мой код бэкэнда:

import pyrebase
def get_user_details(token):
    firebaseConfig = {
      "apiKey" : "...",
      "authDomain" : "...",
      "databaseURL" : "...",
      "projectId" : "...",
      "storageBucket": "...",
      "serviceAccount" : "firebase-adminsdk...",

}

firebase = pyrebase.initialize_app(firebaseConfig)
auth = firebase.auth()
print(auth.get_account_info(token))

1 Ответ

0 голосов
/ 02 марта 2020

проблема была с пакетом pyrebase

вот код для получения информации о пользователе из firebase

def get_user_details(token):
    cred = credentials.Certificate('./google-services.json')
    firebase_admin.initialize_app(cred)
    response = auth.verify_id_token(token)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...