facebooklogin问题 – canOpenURL:URL失败:“fbauth2:///” – 错误:“(null)”
当我点击Facebookloginbutton时,它正在打开Safari浏览器,并立即closures。 注意到控制台上的错误。
应用程序委托方法:
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool { print("###### URL : ") print(url) print("###### App : ") print(app) print(options["UIApplicationOpenURLOptionsSourceApplicationKey"]) return FBSDKApplicationDelegate.sharedInstance().application(app, openURL: url, sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String, annotation: nil) }
2015-09-18 18:37:51.410 [21036:5050465] -canOpenURL:URL失败:“fbauth2:///” - 错误:“(null)” 2015-09-18 18:37:51.417 [21036:5050465] -canOpenURL:URL失败:“fbauth2:///” - 错误:“(null)” ######url: fb4554284912963222://授权/ ERROR_CODE = 100&ERROR_MESSAGE =无效+范围%3A +公共&状态=%7B%22challenge%22%3A%222ZmK6R5F05d%252F060TkCqj8SjPLjc%253D%22%2C%220_auth_logger_id%22%3A%223C79F2C8-61B9-470E-? AE1B-E1C68435DB83%22%2C%22com.facebook.sdk_client_state%22%3Atrue%2C%223_method%22%3A%22sfvc_auth%22%7D&E2E =%7B%22init%22%3A145973.000512302%7D#_ = _ ###### App: 可选(com.apple.SafariViewService) 零 ###### 呃: 可选(错误域= com.facebook.sdk.core代码= 8“(空)”UserInfo = {com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode = 100,com.facebook.sdk:FBSDKErrorDeveloperMessageKey =无效范围:公共,com.facebook。 SDK:FBSDKGraphRequestErrorCategoryKey = 0})
IDE:xcode 7
语言:Swift2
Facebook SDK:4.6.0
parsing:1.8.4
我也已经validation.plist具有所有必需的密钥。 还validation了打字错误的包标识符。 一切看起来不错。 Facebook是活跃的。
任何帮助?
我有同样的警告,但在Facebook文件中有一个答案。
这是一个Xcode警告,指示canOpenURL:调用返回false。 只要你像上面描述的那样在plist中configuration了LSApplicationQueriesSchemes条目,你可以忽略这个警告
“-canOpenURL:URL失败”警告是一个红色鲱鱼,只是意味着FB应用程序没有安装在您正在运行的设备/模拟器上。
它看起来像你要求一个无效的范围(又名许可)的“公共”。 你能包括你的代码,包括你问什么权限? public_profile可能是你想要的(如果没有提供,SDK默认是什么)。
更重要的是, 不要将fbauth2添加到您的CFBundleURLSchemes中,因为这会破坏loginstream。 正如Himanshu指出的那样,这些条目应该在我们的plist的LSApplicationQueriesSchemes下input。
如果您使用iOS SDK 9.0进行重新编译,如果您使用的是Facebook SDK v4.6.0或更高版本,请将以下内容添加到应用程序的plist中:
<key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array>
要准备iOS 9支持的Facebook集成,请通过Facebook Integraion for iOS 9准则
要检查Facebook SDK的版本,请使用以下代码行:
print("SDK version \(FBSDKSettings .sdkVersion())")
我错过了导入FBSDKCoreKit
。 之后它开始在模拟器上工作,但不在iPhone设备上。
还注意到Facebook网站上的以下常见问题。 为什么我看到控制台消息
'canOpenURL:URL失败:“fb …://'
要么 ? 这是一个Xcode警告,指示canOpenURL:
调用返回false。 只要你像上面描述的LSApplicationQueriesSchemes
在plist
configuration了LSApplicationQueriesSchemes
条目,你可以忽略这个警告
关于不在iPhone设备上工作,请参考: parsingAPI – Facebooklogin不能在iPhone设备上工作
你的url“fbauth2:///”中有一个额外的“/”。
然后你可以在url中看到“error_message = Invalid + Scope”,你应该检查你的应用的权限: https : //developers.facebook.com/docs/facebook-login/permissions/v2.4
这个问题是由于在iOS 9中引入了App Transport Security。
有两个解决scheme,都处理固定您的info.plist文件
这是一个指南http://discoverpioneer.com/blog/2015/09/18/updating-facebook-integration-for-ios-9/
如果您的应用在iOS9或更高版本上运行,则需要添加此方法。
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options { return [[FBSDKApplicationDelegate sharedInstance] application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
}
如果你需要一个Swift版本:
@available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { return SDKApplicationDelegate.shared.application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation] as Any) }
这是一个Xcode警告,指示canOpenURL:调用返回false。 只要你像上面描述的
LSApplicationQueriesSchemes
在plist中configuration了LSApplicationQueriesSchemes
条目,你可以忽略这个警告。
转到此链接select您的应用程序,并configuration您的info.plist
import
并将此代码添加到您的AppDelegate
import FBSDKCoreKit . import FBSDKLoginKit func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) } func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options) }
我想出了我的问题。 这只是loginButtonClicked函数中的语法。 错误消息导致我错误的path。 这是工作代码。
@objc func loginButtonClicked() { self.login = FBSDKLoginManager() self.login.logIn(withReadPermissions: ["public_profile"], from: self, handler: {(result, error) -> Void in if error != nil { print("Process error") } else if (result?.isCancelled)! { print("Cancelled") } else { print("Logged in") DispatchQueue.main.async(execute: { let viewController:UIViewController = self.storyboard?.instantiateViewController(withIdentifier: "UITabBarController") as! UITabBarController self.present(viewController, animated: true, completion: nil) }) } }) }
- Facebook的开放graphics错误 – 推断的属性
- 打开从iOS应用程序的Facebook页面的链接
- Facebook访问令牌服务器端validation的iPhone应用程序
- React-Native:应用程序尚未注册错误
- 为给定的URL获取Facebook /共享计数
- iOS 6的Facebook发布过程结束与“remote_app_id不匹配存储的ID”错误
- 从用户访问令牌获取应用程序ID(或者validation源应用程序是否有令牌)
- 使用symfony2进行Facebook + UserBundlevalidation
- 从ASP.NET MVC 5中的Facebook v2.4 API访问OAuth ExternalLoginCallback中的电子邮件地址