尝试使用 iOS Facebook SDK 登录时收到以下错误:
Invalid Scopes: public_profile, openid.
我已按照此处的说明进行操作,这导致了此设置:
信息.plist
<plist version="1.0">
<dict>
...
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string></string>
<key>CFBundleURLSchemes</key>
<array>
<string>GOOGLE_URL_SCHEME</string>
<string>fbMY_FB_APP_ID</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>MY_FB_APP_ID</string>
<key>FacebookClientToken</key>
<string>MY_FB_CLIENT_TOEN</string>
<key>FacebookDisplayName</key>
<string>MY_FB_APP_NAME</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbauth2</string>
<string>fbapi</string>
<string>fb-messenger-share-api</string>
</array>
</dict>
</plist>
AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
ApplicationDelegate.shared.application( application, didFinishLaunchingWithOptions: launchOptions )
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
return ApplicationDelegate.shared.application(app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplication.OpenURLOptionsKey.annotation])
}
登录片段
let loginManager = LoginManager()
loginManager.logIn(permissions: ["public_profile"], from: self) { result, error in
if let error = error {
print("FB Error: \(error)")
} else if let result = result, result.isCancelled {
print("FB Cancelled")
} else {
print("FB Logged In")
}
}
我使用的是 iOS 16.2,使用 facebook-ios-sdk 版本 15.1.0。 FB 应用程序在实时和开发模式下也会发生同样的错误。我在模拟器和设备上收到相同的错误。使用FB应用程序JS库时,我可以成功登录网络。我相信我已正确遵循说明。我错过了什么?
编辑:设置屏幕截图
编辑:
所以我刚刚从 facebook-ios-sdk 下载了这个示例。将我的 FB 应用程序 ID 添加到 plist 中的 FacebookAppID 字段和 URL 方案中。将 FB 客户端令牌添加到 plist 并将捆绑包标识符更新为 Facebook 应用程序中列出的标识符,但在运行示例时遇到相同的错误。这到底是怎么回事?问题肯定出在 Facebook 应用程序设置中,但在哪里呢?我在网络上找不到任何地方报告此问题。肯定有人以前见过这个。