Facebook経由でユーザーにログインしようとしています。以前のバージョンのSwift 1.2はすべて正常に機能していましたが、移行後にFBアカウントからログインできないようです。
-canOpenURL:URLの失敗: "fbauth:// authorize /?client_id = ...エラー:"このアプリはスキームfbauthのクエリを許可されていません "
それで私を助けてもらえますか?
Facebookの指示に従ってiOS 9用のアプリを準備することをお勧めします: https://developers.facebook.com/docs/ios/ios9
アプリに適したバージョンのFacebook SDKをダウンロードします。
v4.x-推奨。 v3.24.0-SDKのv4.xにまだ移行していない場合のみ。 2.ネットワークリクエストのFacebookサーバーをホワイトリストに登録する
IOS SDK 9.0でアプリをコンパイルすると、App Transport Securityの影響を受けます。現在、アプリケーションのplistに以下を追加して、アプリのFacebookドメインをホワイトリストに登録する必要があります。
<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>
または、次のようなエラーが発生します。
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}}
Facebookアプリへの切り替えを実行できるFacebookダイアログ(ログイン、共有、アプリ招待など)を使用する場合は、アプリケーションのplistを更新して、 https://developer.Apple.com/videos/wwdc/2015/?id=703
IOS SDK 9.0で再コンパイルする場合、SDK v4.5以前のバージョンを使用している場合は、アプリケーションのplistに次を追加します。
<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>
V4.6リリースより古いバージョンのFBSDKMessengerShareKitを使用している場合は、
<string>fb-messenger-platform-20150128</string>
<string>fb-messenger-platform-20150218</string>
<string>fb-messenger-platform-20150305</string>
SDKのv4.6.0を使用している場合、追加する必要があるのは次のもののみです。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
これにより、FacebookSDK統合により、インストール済みのFacebookアプリを適切に識別して、アプリの切り替えを実行できます。 iOS SDK 9.0で再コンパイルしない場合、アプリは50の異なるスキームに制限されます(その後canOpenURLを呼び出すとNOが返されます)。
WWDC 2015の「Privacy and Your App」ビデオから、info.plistファイルに次を追加します。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbauth</string>
</array>
このリンクに従って、FacebookのiOS 9の推奨アップデートを確認してください https://developers.facebook.com/docs/ios/ios9
この特定のエラーを修正するには
-canOpenURL: failed for URL: "fbauth://authorize/?client_id=... error: "This app is not allowed to query for scheme fbauth"
Facebook SDKバージョン4.6+の場合、info.plistファイルに移動して、次を追加します。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
バージョン4.5以前の場合:
<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>
1] Developer.facebookでの認証とFacebook IDの生成
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 SDKフレームワークのダウンロード
=>Bolts.framework
=>FBSDKCoreKit.framework
=>FBSDKLoginKit.framework
=>FBSDKShareKit.framework