Facebook SDK: aplikacja nie jest zarejestrowana jako schemat adresu URL


82

Używam Facebook SDKznalezionego tutaj i próbuję dostarczonego przykładu (w folderze FacebookiOSSample).

Jeśli po prostu zastąpię AppIdtutaj moje konkretne AppId, nie mogę już udostępniać. (Zastąpiłem go zarówno w AppDelegatepliku, jak iw info.plistpliku). Teraz otrzymuję następujący błąd:

FBSDKLog: Nieprawidłowe użycie FBAppCall, fb **** nie jest zarejestrowany jako schemat adresu URL. Czy ustawiłeś „FacebookUrlSchemeSuffix” w swoim plistie?

W przeciwnym razie działa to dobrze z oryginałem próbki, AppIdktóry wskazuje na coś nazwanego IFaceTouch.

Co może być nie tak z konfiguracją mojej aplikacji, jak mogę się zarejestrować AppId?


1
Uwaga: poniższa odpowiedź, która zaleca dodanie fbauth2 do CFBundleURLSchemes, spowoduje, że Twoja aplikacja przechwyci ruch logowania przełącznika aplikacji Facebook innej aplikacji. NIE ROBIĆ TEGO
Chris Maddern

Jeśli próbujesz rozwiązać problem z ostrzeżeniami „canOpenURL: failed”, te wskazują jedynie, że aplikacja Facebook nie jest zainstalowana na Twoim urządzeniu lub symulatorze i można je zignorować. '
Binoy jose

Odpowiedzi:


227

Wykonaj te trzy kroki:

  1. Utwórz klucz o nazwie FacebookAppID z wartością ciągu i dodaj tam identyfikator aplikacji.
  2. Utwórz klucz o nazwie FacebookDisplayName z wartością ciągu i dodaj nazwę wyświetlaną skonfigurowaną na pulpicie nawigacyjnym aplikacji.
  3. Utwórz klucz tablicy o nazwie Typy adresów URL z pojedynczym elementem podrzędnym tablicy o nazwie Schematy adresów URL . Daj temu pojedynczy element z identyfikatorem aplikacji z prefiksem fb. Służy to zapewnieniu, że aplikacja otrzyma adres URL wywołania zwrotnego internetowego przepływu OAuth.

Gotowa lista .pl powinna wyglądać mniej więcej tak:

wprowadź opis obrazu tutaj

Link do źródła:


1
Okay, problem wyglądał na FacebookDisplayName, to nie pasowało do mojego pulpitu nawigacyjnego aplikacji. Dzięki!
L. Desjardins,

3
W większości przypadków literówka, która może spowodować podobny komunikat o błędzie, nawet błędnie wpisaną literę z pominiętą dużą / małą literą. Sprawdź je dwukrotnie!
BootMaker,

4
@BootMaker Po drugie - mój nie działał, ponieważ nieprawidłowo miałem „schematy adresów URL” zamiast „schematów adresów URL”.
Benjamin Martin

1
Możesz zobaczyć szczegółową ilustrację ze zaktualizowaną wersją 2015 dla Xcode 6 tutaj stackoverflow.com/a/18480723/1780492
BootMaker

Uważaj również, aby FacebookAppID i FacebookDisplayName były większe niż typy adresów URL. Awaria, jeśli nie tak w SDK 4.
Paul Razvan Berg,

20

Pod względem surowych kluczy i wartości powinieneś mieć CFBundleURLTypes i CFBundleURLSchemes

Jeśli chodzi o surowe klucze i wartości, powinieneś mieć CFBundleURLTypes i CFBundleURLSchemes. Mam nadzieję, że to pomoże!


1
CFBundle istnieje, ale format xml pomógł mi stwierdzić, że moja struktura jest nieprawidłowa. dziękuję
daniel kilinskas

16

pod informacją znajduje się kolejna sekcja - Typy adresów URL

sprawdź, czy wartości w polu Schematy adresów URL odpowiadają wartości w typach adresów URL -> Schematy adresów URL na liście właściwości powyżej. (a także dopasuj FacebookAppID)

RODZAJE ADRESÓW URL


9

W przypadku iOS 9

Jeśli masz błąd: „LSApplicationQueriesSchemes”

W oparciu o odpowiedź Bear with me będziesz musiał również dodać te wiersze:

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

Zobacz to .

Państwo powinno skończyć z tych linii na końcu swoich .plist plików:

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

* Jeśli używasz pakietu SDK w wersji 4.6.0 lub nowszej, wystarczy dodać: * (Dzięki mohsinj )

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

1
[UPDATE] Sie - 2016 Dla "LSApplicationQueriesSchemes" Musisz dodać więcej elementów - <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array>
mohsinj


4

1- W Xcode kliknij prawym przyciskiem myszy plik Info.plist swojego projektu i wybierz Otwórz jako -> Kod źródłowy.

2- Wstaw następujący fragment kodu XML do treści pliku tuż przed ostatnim </dict>elementem.

  <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- Zastąp {your-app-id} i {your-app-name} identyfikatorem i nazwą aplikacji, które można znaleźć w panelu aplikacji Facebook.


0

Dzisiaj rozwiązałem ten błąd, po prostu usuwając miejsce z FacebookDisplayName .

upewnij się, że nie masz wolnego miejsca w FacebookDisplayName


0

Nie wiem, czy twój problem jest taki sam jak mój. Ale znalezienie go zajęło mi trochę czasu i umieszczę go tutaj, aby mógł pomóc każdemu .. Problem polegał na tym, że logowanie Google korzystało z tej samej nazwy atrybutu info.plist i zastępowało te z Facebooka. Więc ja mógł zobaczyć to w X-Code i złożyć je razem, teraz wszystko działa dobrze! (Atrybut Typy adresów URL).


0

W moim przypadku miałem już klucze LSApplicationQueriesSchemes i CFBundleURLTypes w moim info.plist, kiedy ponownie dodałem je oddzielnie w info.plist. nie przeczytał drugiego i nie rozpoznaje. Więc dodanie wartości do poprzednich kluczy LSApplicationQueriesSchemes i CFBundleURLTypes rozwiązało mój problem.


-3

Miałem też ten sam problem. Następnie zrobił to:

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

i problem został już rozwiązany.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.