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

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

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

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

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

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


person L. Desjardins    schedule 19.02.2014    source источник
comment
Примечание. Приведенный ниже ответ, в котором рекомендуется добавить fbauth2 в ваши схемы CFBundleURLSchemes, приведет к тому, что ваше приложение будет перехватывать трафик входа в систему с переключением приложений Facebook из другого приложения. НЕ ДЕЛАЙТЕ ЭТОГО   -  person Chris Maddern    schedule 04.04.2016
comment
Если вы пытаетесь устранить предупреждения canOpenURL: failed, они указывают только на то, что приложение Facebook не установлено на вашем устройстве или симуляторе и может быть проигнорировано».   -  person Binoy jose    schedule 13.09.2016


Ответы (10)


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

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

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

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

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

person Rafa de King    schedule 19.02.2014
comment
Хорошо, проблема была в FacebookDisplayName, это не соответствовало моей панели приложений. Спасибо! - person L. Desjardins; 20.02.2014
comment
В большинстве случаев это опечатка, которая может вызвать подобное сообщение об ошибке, даже опечатка с пропущенным верхним/нижним регистром. Дважды проверьте их! - person BootMaker; 03.01.2015
comment
@BootMaker Во-вторых, мой не работал, потому что у меня были неправильные схемы URL-адресов вместо схем URL-адресов. - person Benjamin Martin; 22.05.2015
comment
Вы можете увидеть подробную иллюстрацию с обновленной версией 2015 года для Xcode 6 здесь stackoverflow.com/a/18480723/1780492 - person BootMaker; 24.05.2015
comment
Также следите за тем, чтобы FacebookAppID и FacebookDisplayName располагались выше, чем типы URL. Он вылетает, если не так на SDK 4. - person Paul Razvan Berg; 24.11.2016
comment
если кто-то использует вход в Google, то для Google также будет другая схема URL. поэтому в массиве будет два элемента - person Im Batman; 21.08.2019
comment
В одном типе URL вы можете иметь более одной схемы URL (т.е. при использовании разных сред) - person Javier Vazquez; 21.05.2020

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

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

person clearwater82    schedule 08.05.2015
comment
CFBundle существует, но формат xml помог мне обнаружить, что моя структура неверна. Спасибо - person daniel kilinskas; 25.05.2015

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

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

ТИПЫ URL

person Aviram Netanel    schedule 29.06.2015

Для iOS 9

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

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

<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 или выше, вам нужно всего лишь добавить:* (спасибо мохсиндж)

   <key>LSApplicationQueriesSchemes</key>
      <array>
        <string>fbapi</string>
        <string>fb-messenger-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>
   </array>
person JeffersonBe    schedule 15.01.2016
comment
[ОБНОВЛЕНИЕ] Август – 2016 г. Для LSApplicationQueriesSchemes необходимо добавить дополнительные элементы – <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array> - person mohsinj; 10.08.2016

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.

person Mahgol Fa    schedule 08.07.2018

Перейдите по этой Ссылке, выберите свое приложение и настройте info.plist

person ZAFAR007    schedule 30.08.2017

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

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

person Krutarth Patel    schedule 24.03.2018

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

person Daniel Vilela    schedule 14.04.2019

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

person Nasir Khan    schedule 04.09.2020

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

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

и проблема исправлена ​​сейчас.

person sugeet goyal    schedule 03.08.2016