Facebook SDK: App nicht als URL-Schema registriert

82

Ich verwende das hierFacebook SDK gefundene und versuche das bereitgestellte Beispiel (im Ordner ).FacebookiOSSample

Wenn ich das AppIdhier einfach durch mein spezifisches ersetze AppId, kann ich es nicht mehr teilen. (Ich habe es sowohl in der AppDelegateDatei als auch in der info.plistDatei ersetzt). Ich erhalte jetzt folgenden Fehler:

FBSDKLog: Ungültige Verwendung von FBAppCall, fb **** ist nicht als URL-Schema registriert. Haben Sie 'FacebookUrlSchemeSuffix' in Ihre Liste aufgenommen?

Andernfalls funktioniert dies gut mit dem Original des Samples, AppIddas auf einen Namen verweist IFaceTouch.

Was könnte an der Einrichtung meiner App falsch sein, wie registriere ich meine AppId?

L. Desjardins
quelle
1
Hinweis: Die folgende Antwort, in der Sie aufgefordert werden, fbauth2 zu Ihren CFBundleURLSchemes hinzuzufügen, führt dazu, dass Ihre App den Facebook-App-Switch-Anmeldeverkehr anderer Apps abfängt. TUN SIE DAS NICHT
Chris Maddern
Wenn Sie versuchen, "canOpenURL: failed" -Warnungen aufzulösen, weisen diese nur darauf hin, dass die Facebook-App nicht auf Ihrem Gerät oder Simulator installiert ist und ignoriert werden kann. '
Binoy Jose

Antworten:

225

Befolgen Sie diese drei Schritte:

  1. Erstellen Sie einen Schlüssel namens FacebookAppID mit einem Zeichenfolgenwert und fügen Sie dort die App-ID hinzu.
  2. Erstellen Sie einen Schlüssel namens FacebookDisplayName mit einem Zeichenfolgenwert und fügen Sie den Anzeigenamen hinzu, den Sie im App-Dashboard konfiguriert haben.
  3. Erstellen Sie einen Array-Schlüssel mit dem Namen URL-Typen mit einem einzelnen Array-Unterelement namens URL-Schemata . Geben Sie diesem einen einzelnen Artikel mit Ihrer App-ID mit dem Präfix fb. Dies wird verwendet, um sicherzustellen, dass die Anwendung die Rückruf- URL des webbasierten OAuth-Flusses erhält .

Die fertige .plist sollte ungefähr so ​​aussehen:

Geben Sie hier die Bildbeschreibung ein

Quelllink:

RaffAl
quelle
1
Okay, das Problem schien FacebookDisplayName zu sein, dies stimmte nicht mit meinem App Dashboard überein. Vielen Dank!
L. Desjardins
3
Meistens der Tippfehler, der eine ähnliche Fehlermeldung verursachen kann, sogar ein falsch getippter Buchstabe mit fehlendem Groß- / Kleinbuchstaben. Überprüfe sie noch einmal!
BootMaker
4
@BootMaker Zweitens: Meins funktionierte nicht, weil ich fälschlicherweise "URL-Schemata" anstelle von "URL-Schemata" hatte.
Benjamin Martin
1
Sie könnten eine detaillierte Darstellung mit der aktualisierten Version 2015 für Xcode 6 hier sehen stackoverflow.com/a/18480723/1780492
Schuhmachers
Achten Sie auch darauf, dass FacebookAppID und FacebookDisplayName über den URL-Typen liegen. Es stürzt ab, wenn nicht so auf SDK 4.
Paul Razvan Berg
20

In Bezug auf Rohschlüssel und Werte sollten Sie CFBundleURLTypes und CFBundleURLSchemes haben

In Bezug auf Rohschlüssel und Werte sollten Sie CFBundleURLTypes und CFBundleURLSchemes haben. Hoffentlich hilft das!

clearwater82
quelle
1
CFBundle ist vorhanden, aber das XML-Format hat mir geholfen, festzustellen, dass meine Struktur falsch war. danke
daniel kilinskas
16

Unter den Info- URL-Typen befindet sich ein weiterer Abschnitt

Überprüfen Sie, ob die Werte dort im Feld URL-Schemata mit dem Wert in den URL-Typen -> URL-Schemata in der obigen Eigenschaftsliste übereinstimmen . (und auch mit der FacebookAppID übereinstimmen)

URL-TYPEN

Aviram Netanel
quelle
9

Für iOS 9

Wenn Sie einen Fehler haben: 'LSApplicationQueriesSchemes'

Basierend auf der Antwort von Bear with me müssen Sie auch die folgenden Zeilen hinzufügen:

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

Sehen Sie das .

Sie sollten mit diesen Zeilen am Ende Ihrer .plist-Dateien enden:

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

* Wenn Sie Version 4.6.0 oder höher des SDK verwenden, müssen Sie nur Folgendes hinzufügen: * (Danke mohsinj )

   <key>LSApplicationQueriesSchemes</key>
      <array>
        <string>fbapi</string>
        <string>fb-messenger-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>
   </array>
JeffersonBe
quelle
1
[UPDATE] Aug - 2016 Für "LSApplicationQueriesSchemes" müssen Sie weitere Elemente hinzufügen - <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array>
Mohsinj
4

1- Klicken Sie in Xcode mit der rechten Maustaste auf die Info.plist-Datei Ihres Projekts und wählen Sie Öffnen als -> Quellcode.

2- Fügen Sie das folgende XML-Snippet unmittelbar vor dem letzten </dict>Element in den Hauptteil Ihrer Datei ein .

  <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- Ersetzen Sie {Ihre-App-ID} und {Ihren-App-Namen} durch die App-ID und den Namen Ihrer App, die Sie im Facebook App Dashboard finden.

Mahgol Fa
quelle
3

Gehen Sie zu diesem Link. Wählen Sie Ihre App aus und konfigurieren Sie Ihreinfo.plist

ZAFAR007
quelle
0

Heute habe ich diesen Fehler behoben, indem ich einfach Speicherplatz aus FacebookDisplayName entfernt habe .

Stellen Sie sicher, dass in FacebookDisplayName kein Speicherplatz vorhanden ist

Krutarth Patel
quelle
0

Ich weiß nicht, ob Ihr Problem dasselbe ist wie meins. Aber ich habe einige Zeit gebraucht, um es zu finden, und ich werde es hier einfügen, damit es jedem helfen kann. Das Problem war, dass die Google-Anmeldung denselben Attributnamen info.plist verwendete und die von Facebook überschrieb. Also ich konnte dies in X-Code sehen und zusammenfügen, jetzt funktioniert alles gut! (Attribut URL-Typen).

Daniel Vilela
quelle
0

In meinem Fall hatte ich bereits LSApplicationQueriesSchemes- und CFBundleURLTypes-Schlüssel in meiner info.plist, als ich sie erneut separat in info.plist hinzufügte. es hat den zweiten nicht gelesen und erkennt ihn nicht. Das Hinzufügen von Werten zu den vorherigen Schlüsseln LSApplicationQueriesSchemes und CFBundleURLTypes hat mein Problem gelöst.

Nasir Khan
quelle
-3

Ich stand auch vor dem gleichen Problem. Dann tat dies:

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

und das Problem ist jetzt behoben.

sugeet goyal
quelle