iOS 9 Facebooklogin模拟器-canOpenURL:URL失败:“fbauth2:///” – 错误:“(null)”

我已经更新到Xcode 7和最新的iOS SDK。 我在应用程序的plist中添加了相应的条目:

在这里输入图像说明

我的应用程序的Facebooklogin在设备上正常工作。 但是,在iOS 9模拟器上,我得到:

-canOpenURL: failed for URL: "fbauth2:///" - error: "(null)"

和login不起作用。 我已经看到Facebooklogin问题 – canOpenURL:URL失败:“fbauth2:///” – 错误:“(null)”,但我有FBSDKCoreKit框架。 我也见过Facebook SDK 4.5 IOS 9,但它的答案并不能解决我的问题。

为什么我在模拟器上得到这个错误,而不是在设备上,即使我已经在https://developers.facebook.com/docs/ios/ios9做了这个清单?

为什么我看到控制台消息,如“canOpenURL:URL失败:”fb …://“或?

这是一个Xcode警告,指示canOpenURL:调用返回false。 只要你像上面描述的LSApplicationQueriesSchemes在plist中configuration了LSApplicationQueriesSchemes条目, 你可以忽略这个警告

这不是问题。 FB SDK试图打开具有fbauth2:// urltypes的原生facebook应用程序。 在模拟器不可用,所以它只是把日志,它无法打开原生Facebook应用程序。 您可以在Simulator中configurationFacebook acct,然后告诉FB Loginbutton使用本地Facebook帐户,而不是打开Web视图。 但Facebook争辩说,数百万人在浏览器中使用Facebook,所以在iOS 9中,他们已经使用新的SFSafariViewController作为Facebooklogin的默认行为,甚至在设备上。 你可以尝试使用本地Facebook,看看它是否工作。

检查此链接的讨论。

https://www.facebook.com/login.php?next=https%3A%2F%2Fdevelopers.facebook.com%2Fbugs%2F786​​729821439894%2F%3Fsearch_id

我将我的Facebook SDK从4.7版降级到4.5.1,并在模拟器和iPhone设备上都正常工作(没有安装Facebook应用程序)。

在使用LSApplicationQueriesSchemes数组更新了您的应用程序的.plist文件后,您似乎已经完成了该操作:

接下来 ,validation您的Facebook SDK是否为版本4.6.0 。 如果不是,请按照Facebook的指示 。

最后 ,这可能是问题出现的地方,是重置您的模拟器的内容和设置

重置您的模拟器:

  1. select模拟器
  2. select重置内容和设置
  3. 重置选项

苹果公司的模拟器,甚至是IDE,都会有错误,closures和重新打开,以及重新设置模拟器,在寻找解决scheme时,总是要考虑一下。

希望这可以帮助!

根据Facebook:

iOS SDK支持SafariViewController,它让我们切换显示Web呈现对话框,而不是做一个应用程序切换。 这个testing版SDK将根据用户的设备自动确定最佳的应用切换体验。 例如,通过SafariViewController,而不是Safari的Facebooklogin,拖欠人的经验….

Facebook的参考链接: https : //developers.facebook.com/bugs/786729821439894/?search_id

Stack参考链接: https : //stackoverflow.com/a/32593070/2905967

按照这些步骤,您可能可以避免这个错误:

1)转到 – >支持文件

2)info.plist

3)右键单击info.plist – >打开为 – >select源代码

*在<dict>...</dict>里添加下面的代码<dict>...</dict> *

 <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array> 

1]在Developer.facebook中进行身份validation并生成Facebook ID,例如:=> 460481580805052

2]设置位码:否来自生成设置

3]设置Plist文件

 <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <string>fb460481580805052</string> </array> </dict> </array> <key>FacebookAppID</key> <string>460481580805052</string> <key>LSRequiresIPhoneOS</key> <true/> <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>akamaihd.net</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/> </dict> <key>facebook.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/> </dict> <key>fbcdn.net</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/> </dict> </dict> </dict> <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fbapi20130214</string> <string>fbapi20130410</string> <string>fbapi20130702</string> <string>fbapi20131010</string> <string>fbapi20131219</string> <string>fbapi20140410</string> <string>fbapi20140116</string> <string>fbapi20150313</string> <string>fbapi20150629</string> <string>fbauth</string> <string>fbauth2 </string> <string>fb-messenger-api20140430</string> <string>fb-messenger-platform-20150128</string> <string>fb-messenger-platform-20150218</string> <string>fb-messenger-platform-20150305</string> </array> 

4]下载4个Sdk框架

 =>Bolts.framework =>FBSDKCoreKit.framework =>FBSDKLoginKit.framework =>FBSDKShareKit.framework 

对于iOS 9或更高版本,请在AppDelegate文件中添加此方法:

https://stackoverflow.com/a/43515243/535013

请使用LSApplicationQueriesSchemes或添加到plist您的应用程序ID。