Подтвердить что ты не робот

Swift 2 parse facebookSDK ios9

Я пытаюсь войти в систему через Facebook. В предыдущей версии swift 1.2 все работало отлично, но после миграции я не могу войти в систему через свою учетную запись FB. Я все еще получаю сообщение об ошибке:

-canOpenURL: не удалось URL: "fbauth://authorize/? client_id =... ошибка:" Это приложение не разрешено запрашивать для схемы fbauth "

Не могли бы вы помочь мне с этим?

4b9b3361

Ответ 1

Я предлагаю следовать инструкциям от Facebook, чтобы подготовить приложение для iOS 9: https://developers.facebook.com/docs/ios/ios9

  • Загрузите последнюю версию Facebook SDK для iOS

Загрузите соответствующую версию SDK для своего приложения.

v4.x - Рекомендуется. v3.24.0 - Только если вы еще не перенести на v4.x SDK. 2. Whitelist Facebook Servers для сетевых запросов

Если вы скомпилируете приложение с помощью iOS SDK 9.0, на него повлияет App Transport Security. В настоящее время вам нужно будет переадресовывать домены 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. Whitelist Facebook Apps

Если вы используете любой из диалогов Facebook (например, Login, Share, App Invites и т.д.), которые могут выполнять переход к приложениям Facebook, вам необходимо обновить свой прикладной план для обработки изменений в canOpenURL, описанных в https://developer.apple.com/videos/wwdc/2015/?id=703

Если вы перекомпилируете с iOS SDK 9.0, добавьте следующее в свой прикладной уровень, если вы используете версию SDK v4.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>

Если вы используете FBSDKMessengerShareKit из версий старше версии v4.6, добавьте

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

Если вы используете v4.6.0 SDK, вам нужно только добавить:

<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).

Ответ 2

В видеоролике WWDC 2015 "Конфиденциальность и ваше приложение" добавьте следующее в свой файл info.plist:

    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>fbauth</string>
    </array>

Ответ 3

Следуйте по этой ссылке, чтобы увидеть обновленные обновления 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>

Ответ 4

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 Framework, например

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