Facebook API Fehler 191

76

Ich versuche mein Projekt in Facebook zu integrieren. Ich mache zuerst kleine Schritte und versuche nur, mich anzumelden, eine Facebook-Sitzung zu erhalten und einige Benutzerdaten abzurufen. Ich entwickle es lokal, daher sind meine Facebook-Anwendungseinstellungen:

site URL: http://127.0.0.1:8888/mySite/

Die Canvas-URL ist dieselbe wie oben. Ich habe keine Site-Domain angegeben.

Wenn ich jedoch auf die Anmeldeschaltfläche klicke, wird folgende Fehlermeldung angezeigt:

API Error Code: 191
API Error Description: The specified URL is not owned by the application
Error Message: redirect_uri is not owned by the application.

Im Moment habe ich keinen serverseitigen Code für Weiterleitungen usw. geschrieben. Ich habe lediglich das JavaScript SDK hinzugefügt, das auf dem Tutorial in Facebook für Websites basiert .

Was habe ich falsch gemacht? Es hat offensichtlich etwas mit meinen Facebook-Anwendungseinstellungen zu tun, aber ich kann nicht sehen, was!

musoNic80
quelle
Für Leser: Bitte beachten Sie, dass diese Frage und die akzeptierte Antwort sowohl für lokale Server und Entwicklung / Tests als auch für echte Server und URLs gelten!
Stefano

Antworten:

88

UPDATE:
So beantworten Sie den API-Fehlercode: 191
Der Code redirect_urisollte gleich (oder relativ) zur Site-URL sein.
Geben Sie hier die Bildbeschreibung ein

Tipp: Verwenden Sie Basis-URLs anstelle vollständiger URLs, die auf bestimmte Seiten verweisen.

Nicht empfohlen: Zum Beispiel, wenn Sie verwenden , www.mydomain.com/fb/test.htmlwie Sie Ihre Website - URL ist und www.mydomain.com/fb/secondPage.htmlwie redirect_uridiese gibt Ihnen die 191 Fehler.

EMPFOHLEN: Stellen Sie stattdessen Ihre Site-URL auf eine Basis-URL wie www.mydomain.com/OR ein www.mydomain.com/fb/.


Ich habe heute die Facebook Python-Beispielanwendung durchgesehen und war schockiert , dass klar war, dass Sie sie http://localhost:8080/als Site-URL verwenden können, wenn Sie lokal entwickeln:

Konfigurieren Sie die Site-URL und verweisen Sie auf Ihren Webserver. Wenn Sie lokal entwickeln, können Sie http: // localhost: 8080 / verwenden.

Während ich war sicher , dass Sie das nicht tun, basierend auf meiner eigenen Erfahrung (sehr alte Test obwohl) scheint es , dass Sie tatsächlich CAN Ihre Facebook - Anwendung lokal testen!

Also nahm ich eine alte Anwendung von mir und bearbeitete ihren Namen, Site-URL und Canvas-URL: Site-URL: http://localhost:80/fblocal/

Ich habe das neueste Facebook PHP-SDK heruntergeladen und in meinen xampp/htdocs/fblocal/Ordner geworfen.

Aber ich habe den gleichen Fehler wie bei Ihnen! Ich habe festgestellt, dass XAMPP eine automatische Umleitung zu macht, http://localhost/fblocal/daher habe ich die Einstellung auf einfach geändert http://localhost/fblocal/und der Fehler wurde behoben, ABER ich musste die Anwendung (aus den Datenschutzeinstellungen ) entfernen und meine Anwendung neu installieren. Hier sind die Ergebnisse:
Alt-Text

Danach bat publish_streamich um Erlaubnis und konnte in meinem Profil veröffentlichen (mit dem PHP-SDK):

$user = $facebook->getUser();
if ($user) {
    try {
        $post = $facebook->api('/me/feed', 'post', array('message'=>'Hello World, from localhost!'));
    } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }
}

Ergebnisse: Alt-Text

ifaour
quelle
1
Ähm, jetzt bin ich verwirrt. Was ist mit dieser Antwort: stackoverflow.com/questions/4633846/facebook-app-development
musoNic80
1
Ich vermute, er meinte damit, dass Sie Ihre Anwendung lokal testen können, aber jede Interaktion mit Facebook erfordert die Veröffentlichung Ihrer Website / Domain. Wenn Sie beispielsweise ein Flash-Spiel haben, können Sie es lokal testen, bevor Sie es auf der FB-Leinwand durchlaufen. In Bezug auf den Code danach erklärt er, wie Sie Ihre Live- Website vor dem Zugriff schützen können , bis die Entwicklung abgeschlossen ist und Sie bereit sind, live zu gehen.
ifaour
2
So weit, ist es gut! Ich bin bis zum Anmeldedialog gekommen und habe um Erlaubnis gebeten! Ich hatte noch keine Gelegenheit, einige aktuelle Daten zu testen, freue mich aber darauf, dass die Antwort akzeptiert wird, wenn ich das tue! Woohoo!
musoNic80
Wie haben Sie die App neu installiert? Ich bin im Sandbx-Modus und erhalte den gleichen Fehler 191, es sei denn, ich greife direkt im Browser auf meine redirect_url zu, die mir dann Auth Dialog
Volatil3
@ Volatil3, ich habe es gerade aus meiner App-Liste in den Datenschutzeinstellungen entfernt.
ifaour
11

Für mich war es eine fehlende App-Domain. Gehen Sie in die App und stellen Sie sicher, dass Sie das Stammverzeichnis Ihrer Site als App-Domain eingerichtet haben. Siehe Screenshot.

App-Domains befinden sich in den Grundeinstellungen Ihrer App

Mike_K
quelle
Diese Antwort hat nichts mit der Frage zu tun,
Vince
4
Die Frage des Fragestellers ist bereits gelöst. Diese Antwort soll für Menschen mit einem ähnlichen Problem nützlich sein, die glauben, dass diese Frage ihnen aufgrund des großen, fett gedruckten Titels helfen wird. Jetzt kann es.
Mike_K
8

Dies liegt nur an einem URL-Fehler.

Die angegebene Website-URL sollte korrekt sein.

Ich habe die URL der Website als http://localhost:3000/ und die Domain als localhost erwähnt, aber in meinem Browser wurde sie ausgeführt http://0.0.0.0:3000/.

Als ich Server lief localhost:3000, löste es das Problem.

Wie bereits erwähnt, wird die Site-URL als localhost Facebook auf dieselbe umgeleitet. Wenn wir sie ausführen 0.0.0.0:3000, wird der Fehler "Die angegebene URL ist in der Anwendungskonfiguration nicht zulässig" angezeigt.

Devudilip
quelle
2

Ich hatte auch das gleiche Problem, als ich die Facebook-Authentifizierungsmethode verwendete. Aber ich behebe dieses Problem mit den folgenden Änderungen in Facebook api ( Apps >> My App >> Basic).

  1. Ich habe die URL entfernt, die ich in ===> App auf Facebook angegeben habe (Canvas URLs)
  2. Ich habe Website - URL nur in ===> Webseite mit Facebook Login Option

Dann gab ich diese AppId und App Secret auf meiner Webseite.

Wenn Sie also auf die Schaltfläche "Anmelden" klicken, werden Sie nach Zugriffsberechtigungen gefragt und anschließend umgeleitet, um eine URL anzugeben ( Website mit Facebook-Anmeldung ).

ShivarajRH
quelle
0

Hatte das gleiche Problem:

$params = array('redirect_uri' => 'facebook.com/pages/foobar-dev');
$facebook->getLoginUrl($params);

Als ich redirect_uri von der Devloper-Seite auf die Live-Seite geändert habe, ist 191 Fehler aufgetreten.

Also habe ich die $ params gelöscht:

$facebook->getLoginUrl();

Nach der App-Anfrage leitet FB nun zur App-URL selbst weiter, zB: my.domain.com

Was ich jetzt mache, ist in index.php meiner App einzuchecken, ob ich in FB iframe bin oder nicht. Wenn nicht, leite ich zur Live-FB-Seite weiter, z.

$app = 'facebook.com/pages/foobar-live';
$rd = (isset($_SERVER['HTTP_REFERER'])) ? parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) : false;
if ($rd == 'apps.facebook.com' || (!isset($_REQUEST['signed_request'])))  {
    echo '<script>window.parent.location = "'.$app.'";</script>';
    die();
}
ggzone
quelle
0

Ich habe auch festgestellt, dass selbst wenn Sie Ihre Website unter Abschnitt - Website mit Facebook-Login -> Website-URL als z. B. http://example.com angeben, Ihr Abschnitt "App-Domänen" jedoch leer ist und Sie die Website als www.example öffnen. com erhalten Sie auch diesen Fehler. Um dies im Abschnitt "App-Domänen" zu vermeiden, schreiben Sie example.com, damit Subdomains wie www.example.com, Something.example.com usw.

dav
quelle
0

Etwas, das ich hinzufügen möchte, da dies die erste Frage von Fehler 191 bei Google ist:

Wenn Sie für eine signierte Anfrage zu Facebook anstatt zu Ihrer eigenen Website umleiten, tritt dieser Fehler möglicherweise auf, wenn der Benutzer sicher surfen kann und Ihre App ohne SSL zu Facebook umleitet.

Barnaba
quelle
0

Vor Ort arbeiten ... Ich konnte die Feed-API nicht zum Laufen bringen, aber die Share-API funktionierte ziemlich sofort ohne Probleme.

chim
quelle
0

Ich habe dies behoben, indem ich die Weiterleitungs-URL an die FacebookRedirectLoginHelper::getAccessToken()Funktion in meiner Rückruffunktion übergeben habe:

Wechsel von

try {
        $accessToken = $helper->getAccessToken();
}
...

zu

try {
        $accessToken = $helper->getAccessToken($fbRedirectUrl);
}
...

Ich entwickle mich auf einer Vagabund-Box und es scheint FacebookRedirectLoginHelper::getCurrentUrl()Probleme zu geben, eine gültige URL zu generieren.

Kyrre
quelle
0

Für mich sind es die gültigen OAuth Redirect-URIs in den Facebook-Anmeldeeinstellungen. Der Fehler 191 ist verschwunden, sobald ich den korrekten Umleitungs-URI aktualisiert habe.

Geben Sie hier die Bildbeschreibung ein

Stanley
quelle