【发布时间】:2020-06-13 19:40:33
【问题描述】:
我在 Flutter 中连接到我的 Facebook 帐户,代码如下:
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))
【问题讨论】:
-
能否请您使用后端代码的 sn-p 编辑问题?
标签: firebase facebook flutter firebase-authentication