Facebook SDK: приложение не зарегистрировано как схема URL


82

Я использую Facebook SDKнайденный здесь , и пробую образец, который предоставлен (в папке FacebookiOSSample).

Если я просто заменю AppIdздесь моим конкретным AppId, то больше не смогу делиться. (Я заменил его и в AppDelegateфайле, и в info.plistфайле). Теперь я получаю следующую ошибку:

FBSDKLog: недопустимое использование FBAppCall, fb **** не зарегистрирован как схема URL. Вы установили FacebookUrlSchemeSuffix в своем списке?

В противном случае это отлично работает с оригиналом образца, AppIdкоторый указывает на что-то с именемIFaceTouch .

Что может быть не так с настройкой моего приложения, как мне зарегистрировать AppId?


1
Примечание. Приведенный ниже ответ, который советует вам добавить fbauth2 в CFBundleURLSchemes, приведет к тому, что ваше приложение перехватит трафик входа в систему переключения приложений Facebook другого приложения. НЕ ДЕЛАЙТЕ ЭТО
Крис Мэддерн

Если вы пытаетесь устранить предупреждения «canOpenURL: failed», они указывают только на то, что приложение Facebook не установлено на вашем устройстве или симуляторе и его можно игнорировать.
Биной ​​Хосе,

Ответы:


227

Выполните следующие три шага:

  1. Создайте ключ с именем FacebookAppID со строковым значением и добавьте туда идентификатор приложения.
  2. Создайте ключ с именем FacebookDisplayName со строковым значением и добавьте отображаемое имя, которое вы настроили на панели инструментов приложения.
  3. Создайте ключ массива, называемый типами URL, с одним подпунктом массива, который называется Схемы URL . Дайте этому один элемент с идентификатором вашего приложения с префиксом fb. Это используется для обеспечения того, чтобы приложение получило URL-адрес обратного вызова веб-потока OAuth.

Готовый .plist должен выглядеть примерно так:

введите описание изображения здесь

Ссылка на источник:


1
Хорошо, похоже, проблема в FacebookDisplayName, это не соответствует моей панели инструментов приложения. Благодаря!
Л. Дежарден

3
В большинстве случаев это опечатка, которая может привести к похожему сообщению об ошибке, даже если буква неправильно набрана с пропущенными верхним / нижним регистром. Дважды проверьте их!
BootMaker 03

4
@BootMaker Во-вторых, мой не работал, потому что у меня неправильно были "схемы URL" вместо "Схемы URL".
Бенджамин Мартин

1
Вы можете увидеть подробную иллюстрацию с обновленной версией 2015 года для Xcode 6 здесь stackoverflow.com/a/18480723/1780492
BootMaker

Также будьте осторожны, чтобы FacebookAppID и FacebookDisplayName были выше типов URL. Он вылетает, если не так, в SDK 4.
Пол Разван Берг

20

Что касается необработанных ключей и значений, у вас должны быть CFBundleURLTypes и CFBundleURLSchemes.

Что касается необработанных ключей и значений, у вас должны быть CFBundleURLTypes и CFBundleURLSchemes. Надеюсь, это поможет!


1
CFBundle существует, но формат xml помог мне обнаружить, что моя структура неверна. спасибо
даниэль килинскас

16

под информацией есть еще один раздел - Типы URL

убедитесь, что значения в поле " Схемы URL-адресов" соответствуют значению в типах URL-адресов -> "Схемы URL-адресов" в списке свойств выше. (а также соответствие FacebookAppID)

ТИПЫ URL


9

Для iOS 9

Если у вас есть ошибка: LSApplicationQueriesSchemes

Основываясь на ответе Bear with me , вам также нужно будет добавить эти строки:

<key>LSApplicationQueriesSchemes</key>
<array>
   <string>fbauth2</string>
</array>

Смотрите это .

Вы должны получить эти строки в конце ваших файлов .plist:

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb2R3234544534554</string>
            </array>
        </dict>
    </array>
    <key>FacebookAppID</key>
    <string>2R3234544534554</string>
    <key>FacebookDisplayName</key>
    <string>stevejeff</string>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <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>
            <key>akamaihd.net</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
        </dict>
    </dict>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>fbauth2</string>
    </array>
    </dict>
    </plist>

* Если вы используете SDK версии 4.6.0 или выше, вам нужно только добавить: * (Спасибо mohsinj )

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

1
[ОБНОВЛЕНИЕ] Август 2016 г. Для LSApplicationQueriesSchemes необходимо добавить больше элементов -<key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array>
mohsinj


4

1- В Xcode щелкните правой кнопкой мыши файл Info.plist вашего проекта и выберите «Открыть как» -> «Исходный код».

2- Вставьте следующий фрагмент XML в тело файла непосредственно перед последним </dict>элементом.

  <key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>fb{your-app-id}</string>
    </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>{your-app-id}</string>
<key>FacebookDisplayName</key>
<string>{your-app-name}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>fbapi</string>
  <string>fb-messenger-share-api</string>
  <string>fbauth2</string>
  <string>fbshareextension</string>
</array>

3. Замените {your-app-id} и {your-app-name} идентификатором и названием вашего приложения, указанными на панели управления приложения Facebook.


0

Сегодня я решил эту ошибку, просто удалив место из FacebookDisplayName. .

убедитесь, что у вас нет места в FacebookDisplayName


0

Не знаю, похожа ли ваша проблема на мою. Но мне потребовалось некоторое время, чтобы найти его, и я помещу его сюда, чтобы он мог помочь кому угодно .. Проблема заключалась в том, что при входе в Google использовалось то же имя атрибута info.plist, и он перекрывал атрибуты facebook .. Итак, я можно было увидеть это в X-Code и собрать их вместе, теперь все работает нормально! (Атрибут Типы URL).


0

В моем случае у меня уже были ключи LSApplicationQueriesSchemes и CFBundleURLTypes в моем info.plist, когда я снова добавил их отдельно в info.plist. второй он не читал и не узнает. Поэтому добавление значений в предыдущие ключи LSApplicationQueriesSchemes и CFBundleURLTypes решило мою проблему.


-3

Я тоже столкнулся с той же проблемой. Потом сделал это:

<dict> <key>CFBundleURLSchemes</key> <array> <string>fb154510174913175</string> <string>fbauth2</string> // add this line to remove the error </array> </dict>

и проблема устранена.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.