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: не вдалося", це лише вказує на те, що програма Facebook не встановлена ​​на вашому пристрої або симуляторі і може бути проігнорована. '
Біной Джозе

Відповіді:


227

Виконайте ці три кроки:

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

Готовий .plist повинен виглядати приблизно так:

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

Посилання на джерело:


1
Гаразд, здавалося, проблема в FacebookDisplayName, це не відповідало моїй інформаційній панелі програми. Дякую!
L. Desjardins

3
Більшість випадків друкує помилку, яка може спричинити подібне повідомлення про помилку, навіть неправильно набрану літеру з пропущеними великими / малими літерами. Перевірте їх ще раз!
BootMaker

4
@BootMaker По-друге - шахта не працювала, тому що я неправильно мав "схеми URL" замість "схеми URL".
Бенджамін Мартін

1
Ви можете побачити докладні ілюстрації з оновленою версією 2015 для Xcode 6 тут stackoverflow.com/a/18480723/1780492
швець

Також будьте обережні, щоб 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 v4.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 Types).


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.