Flutter 提供的身份验证凭据格式不正确或已过期。-Fatter Facebook登录
我正在尝试使用Firebase实时数据库在我的Flatter应用程序中实现FacebookLogin。我可以登录到我的应用程序。但是,当我尝试使用FB的auth令牌从数据库中获取某些内容时,会出现以下错误:Flutter 提供的身份验证凭据格式不正确或已过期。-Fatter Facebook登录,flutter,dart,firebase-realtime-database,facebook-authentication,Flutter,Dart,Firebase Realtime Database,Facebook Authentication,我正在尝试使用Firebase实时数据库在我的Flatter应用程序中实现FacebookLogin。我可以登录到我的应用程序。但是,当我尝试使用FB的auth令牌从数据库中获取某些内容时,会出现以下错误: E/flutter (30549): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: [firebase_auth/invalid-credential] The supplied auth credent
E/flutter (30549): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: [firebase_auth/invalid-credential] The supplied auth credential is malformed or has expired. [ Unsuccessful debug_token response from Facebook: {"error":{"message":"Invalid OAuth access token signature.","type":"OAuthException","code":190,"fbtrace_id":"AwuVQUt6tCG1go"}} ]
以下是我的facebook登录代码:
Future signInFB() async {
var facebookLogin = FacebookLogin();
var facebookLoginResult =
await facebookLogin.logIn(['email']);
switch (facebookLoginResult.status) {
case FacebookLoginStatus.error:
break;
case FacebookLoginStatus.cancelledByUser:
print("CancelledByUser");
break;
case FacebookLoginStatus.loggedIn:
print("LoggedIn");
var graphResponse = await http.get(
'https://graph.facebook.com/v2.12/me?fields=name,first_name,last_name,email,picture.height(200)&access_token=${facebookLoginResult
.accessToken.token}');
fbToken = facebookLoginResult.accessToken.token.toString();
var profile = json.decode(graphResponse.body);
final FirebaseAuth _auth = FirebaseAuth.instance;
print('Token is ' + fbToken);
final OAuthCredential credential = FacebookAuthProvider.credential(fbToken);
final User user = (await _auth.signInWithCredential(credential)).user;
assert(!user.isAnonymous);
assert(await user.getIdToken() != null);
_token = await user.getIdToken();
_userId = user.uid;
print('Profile is ' + profile.toString());
break;
}
}
首先,重新检查以确保Facebook和Firebase之间的捆绑包id/应用程序id相同。错误的捆绑包/应用程序id可能导致此问题 其次,检查您从facebook获得的API密钥和密码是否配置良好且匹配
最后,如果一切顺利,在:Facebook for developers->Settings->Advanced中,请关闭此选项“客户端是否嵌入应用程序机密?”我认为您在Facebook应用程序中的密钥哈希格式不正确。Facebook应用程序需要Base64密钥哈希才能工作。 您必须将您的SHA1指纹从android密钥库编码到Base64 要做到这一点,只需在浏览器控制台中运行这行javascript代码
btoa('your SHA1 key here'.split(':').map(hc => String.fromCharCode(parseInt(hc, 16))).join(''))
将您收到的输出粘贴到facebook应用程序的“设置”>“基本”面板中的键哈希中