38

Facebook経由でユーザーにログインしようとしています。以前のバージョンの Swift 1.2 ではすべてが完全に機能していましたが、移行後、FB アカウント経由でログインできないようで、まだ次のエラーが表示されます。

-canOpenURL: URL で失敗しました: "fbauth://authorize/?client_id=... エラー: "このアプリはスキーム fbauth のクエリを許可されていません"

それを手伝ってもらえますか?

4

4 に答える 4

32

WWDC 2015 の「プライバシーとアプリ」ビデオから、info.plist ファイルに次を追加します。

    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>fbauth</string>
    </array>
于 2015-06-10T19:26:31.827 に答える
28

Facebook の指示に従って、iOS 9 用のアプリを準備することをお勧めします: https://developers.facebook.com/docs/ios/ios9

  1. 最新の Facebook SDK for iOS をダウンロードする

アプリに適したバージョンの 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}}
  1. Facebook アプリをホワイトリストに登録する

Facebook アプリへのアプリ切り替えを実行できる Facebook ダイアログ (ログイン、共有、アプリ招待など) を使用する場合は、アプリケーションの plist を更新して、 https:/で説明されている canOpenURL への変更を処理する必要があります。 /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 が返されます)。

于 2015-09-10T20:42:01.497 に答える
5

このリンクに従って、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>
于 2015-10-12T09:26:46.270 に答える
0

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 フレームワークのようなダウンロード

=>Bolts.framework
=>FBSDKCoreKit.framework
=>FBSDKLoginKit.framework
=>FBSDKShareKit.framework
于 2015-10-03T05:54:56.467 に答える