我正在尝试在我的应用中使用Facebook身份验证。
我在这里按照说明操作:https://firebase.google.com/docs/auth/ios/facebook-login
当我点击Facebook登录按钮时,一切正常:用户已登录。在facebook登录委托方法中,没关系:
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!)
在这种方法中,我必须创建一个Firebase令牌,以便最终使用Firebase进行身份验证(步骤5)。这就是我的工作:
let credential = FacebookAuthProvider.credential(withAccessToken:
FBSDKAccessToken.current().tokenString)
Auth.auth().signIn(with: credential) { (user, error) in
if let error = error {
print(error.localizedDescription)
self.errorServer()
} else {
FitUtils.setFitUser(user: user)
}
}
问题:我的credential
变量不是零,一切正常,但当我调用Auth.auth().signIn(...)
时,该方法会抛出error
变量,user
没有。
我没有很多关于错误的信息:
发生内部错误,打印并检查错误详细信息 了解更多信息。
并且
error NSError domain: "FIRAuthErrorDomain" - code: 17999 0x0000604000640630
我怀疑Facebook API密钥或Firebase控制台中的类似错误,但我已经检查过一切都很好。
有什么想法吗?
修改
我找到了错误的明确描述:
UserInfo={FIRAuthErrorUserInfoDeserializedResponseKey={
code = 400;
errors = (
{
domain = global;
message = "Unsuccessful debug_token response from Facebook: {\"error\":{\"message\":\"(#100) You must provide an app access token or a user access token that is an owner or developer of the app\",\"type\":\"OAuthException\",\"code\":100,\"fbtrace_id\":\"GkGVPPBP7vo\"}}";
reason = invalid;
}
);
message = "Unsuccessful debug_token response from Facebook: {\"error\":{\"message\":\"(#100) You must provide an app access token or a user access token that is an owner or developer of the app\",\"type\":\"OAuthException\",\"code\":100,\"fbtrace_id\":\"GkGVPPBP7vo\"}}";
}}}}
(lldb)
答案 0 :(得分:3)
最后通过这篇文章找到答案:
https://github.com/firebase/FirebaseUI-iOS/issues/83#issuecomment-232523935
我必须禁用选项“是否在客户端中嵌入App Secret?”在Facebook控制台中:
希望这有帮助。
答案 1 :(得分:0)
在Facebook Developer网站上,导航至:
设置>高级>安全>要求应用程序秘密
设置为是。
为我修复了。
答案 2 :(得分:0)
以下内容对我有用:
转到 android / app / src / main / res / values / strings.xml 。确保<resources>
中包含以下行:
<string name="facebook_app_id">FACEBOOK*APP*ID</string>
其中FACEBOOK*APP*ID
是您在 developers.facebook.com/apps