Firebase:使用Firebase令牌进行Facebook身份验证无效

时间:2018-01-25 15:36:40

标签: ios swift firebase facebook-graph-api firebase-authentication

我正在尝试在我的应用中使用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) 

3 个答案:

答案 0 :(得分:3)

最后通过这篇文章找到答案:

https://github.com/firebase/FirebaseUI-iOS/issues/83#issuecomment-232523935

我必须禁用选项“是否在客户端中嵌入App Secret?”在Facebook控制台中:

enter image description here

希望这有帮助。

答案 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

中的应用ID