swift - 使用 Firebase 的 OAuth 问题通过 Facebook 登录(input_token 中的 App_id 与查看应用程序不匹配)
问题描述
我正在尝试通过 Facebook 登录,通过 OAuth 收集一些数据,然后使用凭据登录 Firebase。但是,我遇到了一个问题(请参阅下面的日志)。
代码示例
@objc func signInWFB() {
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.logIn(withReadPermissions: ["email","user_birthday","user_gender"], from: self) { (result, error) -> Void in
if (error == nil) {
let fbloginresult : FBSDKLoginManagerLoginResult = result!
if (result?.isCancelled)! {
print(result ?? FBSDKLoginManagerLoginResult())
} else if(fbloginresult.grantedPermissions.contains("email")) {
if((FBSDKAccessToken.current()) != nil) {
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, email, birthday, gender"]).start( completionHandler: { (connection, result, error) -> Void in
if (error == nil) {
//everything works print the user data
print(result ?? AnyObject.self)
if let d = result as? [String:Any] {
// ALL GOOD UP TO HERE
let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current()!.tokenString)
Auth.auth().signIn(with: credential) { (authResult, error) in
if let error = error {
print(error) // ERROR HERE
return
}
// ...
}
}
}
})
}
}
}
}
}
日志
Error Domain=FIRAuthErrorDomain Code=17004 "来自 Facebook 的 debug_token 响应不成功:{"error":{"message":"(#100) input_token 中的 App_id 与查看应用程序不匹配","type":"OAuthException", "code":100,"fbtrace_id":"BwV3jZweRqo"}}" UserInfo={NSLocalizedDescription=来自 Facebook 的不成功 debug_token 响应:{"error":{"message":"(#100) input_token 中的 App_id 不匹配查看应用程序","type":"OAuthException","code":100,"fbtrace_id":"BwV3jZweRqo"}}, error_name=ERROR_INVALID_CREDENTIAL}
我试过的
- 信息 plist 具有正确的 FacebookAppID 和 AccountKitClientToken
- 尝试在 Facebook 设置中打开/关闭“需要应用程序机密”
- 来自 Firebase 的 OAuth 重定向 URI 添加到 Facebook 设置
解决方案
这很难找到。我必须转到 Firebase > Authentication > Sign-in Method > Facebook 并更改其中的字段以匹配 Facebook 开发人员上的字段。由于某种莫名其妙的原因,它们不同...
推荐阅读
- javascript - 填充数组中的位以使数组具有一定的长度
- javascript - React Hook 不断抛出错误缺少依赖项
- python - Selenium 到数据框以导出到 CSV
- python - 一般来说,我不擅长绘图、循环、数据框
- c# - 在使用 .net 核心时在 linux 服务器中定义文件的路径
- flutter - 两个插件具有相同的类名flutter
- google-apps-script - 在一个部分之后选择“下一步”时收集在表格中输入的信息
- mysql - 更快的 Laravel 迁移,用于测试具有大量表的项目
- azure-active-directory - 由于“角色”的名称,IsInRole 无法正常工作
- node.js - 如何在 middelware [Nest Fastify] 中获取/设置请求/响应标头?