Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

swift 2 parse facebookSDK ios9

I am trying to Log In a user via Facebook. In the previous version of swift 1.2 everything worked perfectly, but after migration I can't seem to log in via my FB account I am still getting the error saying:

-canOpenURL: failed for URL: "fbauth://authorize/?client_id=... error: "This app is not allowed to query for scheme fbauth"

Can you please help me with that?

like image 572
kalafun Avatar asked Jun 09 '15 15:06

kalafun


2 Answers

From the WWDC 2015 "Privacy and Your App" video, add the following to your info.plist file:

    <key>LSApplicationQueriesSchemes</key>     <array>         <string>fbauth</string>     </array> 
like image 152
Mark A. Durham Avatar answered Sep 22 '22 13:09

Mark A. Durham


I suggest following the instructions from Facebook to prepare an app for iOS 9: https://developers.facebook.com/docs/ios/ios9

  1. Download the latest Facebook SDK for iOS

Download the appropriate version of the Facebook SDK for your app.

v4.x - Recommended. v3.24.0 - Only if you have not migrated to v4.x of the SDK yet. 2. Whitelist Facebook Servers for Network Requests

If you compile your app with iOS SDK 9.0, you will be affected by App Transport Security. Currently, you will need to whitelist Facebook domains in your app by adding the following to your application's plist:

<key>NSAppTransportSecurity</key> <dict>     <key>NSExceptionDomains</key>     <dict>         <key>facebook.com</key>         <dict>             <key>NSIncludesSubdomains</key>             <true/>                             <key>NSExceptionRequiresForwardSecrecy</key>             <false/>         </dict>         <key>fbcdn.net</key>         <dict>             <key>NSIncludesSubdomains</key>             <true/>             <key>NSExceptionRequiresForwardSecrecy</key>             <false/>         </dict>         <key>akamaihd.net</key>         <dict>             <key>NSIncludesSubdomains</key>             <true/>             <key>NSExceptionRequiresForwardSecrecy</key>             <false/>         </dict>     </dict> </dict> 

or you will encounter errors like:

NSUnderlyingError=0x7f88f9436eb0 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={NSErrorFailingURLStringKey= https://graph.facebook.com/v2.4, NSLocalizedRecoverySuggestion= Would you like to connect to the server anyway?, _kCFNetworkCFStreamSSLErrorOriginalValue=-9802, kCFStreamPropertySSLPeerCertificates=<CFArray 0x7f88f9536e00 [0x10719f7c0]>{type = immutable, count = 2, values = ( 0 : <cert(0x7f88f963f840) s: *.facebook.com (http://facebook.com/) i: DigiCert High Assurance CA-3> 1 : <cert(0x7f88f96444c0) s: DigiCert High Assurance CA-3 i: DigiCert High Assurance EV Root CA> )},  _kCFStreamPropertySSLClientCertificateState=0, kCFStreamPropertySSLPeerTrust=<SecTrustRef: 0x7f88f9644d10>, NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made.,_kCFStreamErrorDomainKey=3, NSErrorFailingURLKey=https://graph.facebook.com/v2.4, _kCFStreamErrorCodeKey=-9802}} 
  1. Whitelist Facebook Apps

If you use any of the Facebook dialogs (e.g., Login, Share, App Invites, etc.) that can perform an app switch to Facebook apps, you will need to update your application's plist to handle the changes to canOpenURL described in https://developer.apple.com/videos/wwdc/2015/?id=703

If you're recompiling with iOS SDK 9.0, add the following to your application's plist if you're using a version of the SDK v4.5 or older:

<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> </array> 

If you're using FBSDKMessengerShareKit from versions older than the v4.6 release, also add

<string>fb-messenger-platform-20150128</string> <string>fb-messenger-platform-20150218</string> <string>fb-messenger-platform-20150305</string> 

If you're using v4.6.0 of the SDK, you only need to add:

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

This will allow the FacebookSDK integration to properly identify installed Facebook apps to perform an app switch. If you are not recompiling with iOS SDK 9.0, your app is limited to 50 distinct schemes (calls to canOpenURL afterwards return NO).

like image 39
mogile_oli Avatar answered Sep 24 '22 13:09

mogile_oli