通过 Facebook 登录不适用于我的 iOS 应用程序 [重复]
Posted
技术标签:
【中文标题】通过 Facebook 登录不适用于我的 iOS 应用程序 [重复]【英文标题】:Logging in through Facebook not working for my iOS app [duplicate] 【发布时间】:2019-04-01 13:15:17 【问题描述】:我的应用有一个设置,用户可以通过电子邮件和密码输入或通过他们的 Facebook 登录凭据正常登录。
为了通过 Facebook 处理登录,我通过 Cocoapods 使用 Facebook 依赖项。我最近也更新了这些依赖项。
Podfile 片段:-
pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'
我的 Podfile.lock 片段:-
- FacebookCore (0.5.0):
- Bolts (~> 1.9)
- FBSDKCoreKit (~> 4.37)
- FacebookLogin (0.5.0):
- Bolts (~> 1.9)
- FacebookCore (~> 0.5)
- FBSDKCoreKit (~> 4.37)
- FBSDKLoginKit (~> 4.37)
- FacebookShare (0.5.0):
- Bolts (~> 1.9)
- FacebookCore (~> 0.5)
- FBSDKCoreKit (~> 4.37)
- FBSDKShareKit (~> 4.37)
- FBSDKCoreKit (4.38.1):
- Bolts (~> 1.9)
- FBSDKLoginKit (4.38.1):
- FBSDKCoreKit
- FBSDKShareKit (4.38.1):
- FBSDKCoreKit
用户可以使用他们的 Facebook 凭据通过 Safari 浏览器使用电子邮件/电话号码密码凭据登录 Facebook 网站
当用户尝试通过 iPhone 中的 Facebook 应用登录时,问题就出现了。
这些是手头问题的屏幕截图。
第一个屏幕截图显示了通过我的应用程序的 facebook 登录页面:-
下一个屏幕截图显示了尝试通过 facebook 应用程序登录时出现的错误:-
在寻找解决方案时,我看到了这篇文章:- Similar post
根据这篇文章,我检查了我的 info.plist。似乎有效
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>fbfacebook-app-id</string>
</array>
</dict>
</array>
...
<key>FacebookAppID</key>
<string>facebook-app-id</string>
<key>FacebookDisplayName</key>
<string>facebook-display-name</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>whatsapp</string>
</array>
这是我在登录视图控制器中用于 Facebook 相关登录的代码:-
func facebookLoginButtonClicked(sender: UIButton)
let loginManager = LoginManager()
loginManager.logIn(readPermissions: [ReadPermission.publicProfile, ReadPermission.email], viewController : self) loginResult in
switch loginResult
case .failed(let error):
print(error)
case .cancelled:
print("User cancelled login")
case .success(let grantedPermissions, let declinedPermissions, let accessToken):
if let token = accessToken.authenticationToken ?? nil
let params = ["access_token": token as AnyObject, "account_type": PineSimpleData.getOnboardingAccountType()! as AnyObject]
let url = "/user/connect/facebook"
self.socialLogin(params: params, url: url)
AppDelegate 中的代码片段:-
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
....
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool
var handled = FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
if handled
return true
....
return handled
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool
if FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options)
return true
....
return true
func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
到目前为止,通过应用程序和 Facebook 网站都可以正常登录。我应该如何处理这个错误? facebook 开发者部分有强制规定吗?如果是这样,我应该在 facebook 开发人员页面中进行哪些更改?任何帮助表示赞赏。
【问题讨论】:
您是否在 facebook 开发门户中注册了您的应用程序? 我想是的。不太了解,但如果该应用未注册,则无法登录 Facebook。我什至在 info.plist 中有 facebook 应用程序 ID 【参考方案1】:以下是基本步骤:-
1.Open https://developers.facebook.com and select your app
2.Settings > Basic > Add Platform
3.Now select ios from the window and add your Bundle ID and rest of the information and click on Save changes.
同样的问题你可以在这里查看:- iOS Facebook Login "Given URL is not allowed by the Application configuration"
【讨论】:
【参考方案2】:Facebook 应用查询只有fb
。
您需要更新您的 plist:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>whatsapp</string>
</array>
【讨论】:
结果是一样的。错误仍然发生。我只需要更新 plist 吗? 好吧,这可能是其中一种情况,但也请查看***.com/questions/31883079/…【参考方案3】:Facebook 开发者仪表板中有一个开关,用于确定应用是否为原生应用。 可能是你忘记打开了。 Check this image for exact location of that setting
【讨论】:
以上是关于通过 Facebook 登录不适用于我的 iOS 应用程序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
IOS中的Facebook登录适用于模拟器,但不适用于安装了本机应用程序的设备
android facebook登录不适用于安装的本机facebook
带有 facebook/gmail 的 OAuth 不适用于 iOS 模拟器(Cordova 应用程序 + Firebase)