77 votes

Facebook erreur de l'API 191

Je suis en train d'intégrer mon projet avec Facebook. Je vais prendre babysteps au premier et juste essayer de se connecter, d'obtenir un Facebook de session et d'obtenir les données de l'utilisateur. Je suis le développer localement donc mon Facebook paramètres de l'application sont:

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

La toile de l'URL est la même que ci-dessus. Je n'ai pas spécifié de domaine du site.

Cependant, lorsque je clique sur le bouton de connexion, j'obtiens une erreur:

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.

Pour le moment, je n'ai pas écrit tout le code côté serveur pour traiter avec les redirections, etc. Tout ce que j'ai fait est d'ajouter le SDK JavaScript basé sur le tutoriel Facebook pour les Sites web.

Qu'ai-je fait de mal? C'est évidemment quelque chose à voir avec mon Facebook paramètres de l'application, mais je ne vois pas quoi!

89voto

ifaour Points 29213

Mise à JOUR:
Pour répondre à l'API Code d'Erreur: 191
L' redirect_uri doit être égal (ou relatif) à l'URL du Site.
enter image description here

Astuce: Utiliser la base des Url au lieu de l'ensemble de l'Url pointant vers des pages spécifiques.

NON RECOMMANDÉ: Par exemple, si vous utilisez www.mydomain.com/fb/test.html que l'URL de votre Site et avoir www.mydomain.com/fb/secondPage.html comme redirect_uri cela vous donnera l'191 erreur.

RECOMMANDÉ: de Sorte qu'au lieu d'avoir votre URL de Site jeu de base-URL de la forme: www.mydomain.com/ OU www.mydomain.com/fb/.


Je suis passé par Facebook Python exemple d'application aujourd'hui, et j'ai été choqué , il a été, en indiquant clairement que vous pouvez utiliser http://localhost:8080/ comme l' URL du Site si vous développer localement:

Configurer l'URL du Site, et de le montrer à votre Serveur Web. Si vous êtes le développement local, vous pouvez utiliser http://localhost:8080/

Alors que j' étais sûr que vous ne pouvez pas faire cela, basée sur ma propre expérience (très vieux test), il semble que vous ne POUVEZ tester votre Facebook application localement!

J'ai donc repris une ancienne application de la mine et a édité son nom, l'URL du Site et de la Toile URL: URL du Site: http://localhost:80/fblocal/

J'ai téléchargé la dernière version Facebook PHP-SDK et le jeta dans mes xampp/htdocs/fblocal/ le dossier.

Mais j'ai eu la même erreur que le vôtre! J'ai remarqué que XAMPP est en train de faire une redirection automatique vers http://localhost/fblocal/ donc j'ai modifié le paramètre de simplement http://localhost/fblocal/ et l'erreur a disparu MAIS j'ai dû supprimer l'application (à partir de paramètres de confidentialité) et de ré-installer mon application et voici les résultats:
alt text

Après cela, demandé l' publish_stream permission, et j'ai été en mesure de publier sur mon profil (en utilisant le 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;
    }
}

Résultats: alt text

11voto

Mike_K Points 857

Pour moi, c'était un manque domaine de l'application. Allez dans l'app, et assurez-vous que vous avez la racine de votre site mis en place comme un domaine de l'application. Voir la capture d'écran.

app domains is in the basic settings of your app

8voto

devudilip Points 505

ce juste à cause de l'URL erreur

quelle que soit l'url du site web est spécifié doit être correcte.

j'ai mentionné l'url du site web que http://localhost:3000/ et comme domaine localhost

mais dans mon navigateur, j'ai été en cours d'exécution http://0.0.0.0:3000/ qui a été le véritable problème donc j'ai couru serveur comme localhost:3000 maintenant sa fonctionne bien. Parce que nous l'avons mentionné url du site que localhost fb redirigera de même, si nous nous r de course 0.0.0.0:3000 il passera d'erreur que l'URL n'est pas autorisée par la configuration de l'Application.

merci

2voto

ShivarajRH Points 343

J'ai aussi été confrontée au même problème quand je suis en utilisant le facebook de la méthode d'authentification. Mais j'ai rectifier ce problème avec la suite des changements de Facebook api (Apps >> My App >> Basic).

  1. J'ai supprimé l'url que j'ai donné dans ===> App sur Facebook (Toile Url)
  2. J'ai donné l'url du site que dans ===> Site web avec Facebook Connexion option

Je l'ai ensuite donné que AppId et le Secret de l'App dans ma page web.

En cliquant sur le bouton de connexion, Il demande les autorisations d'accès, puis il la réorienter pour donner l'url (Site web avec Facebook Login ).

0voto

ggzone Points 1246

Eu le même problème:

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

Quand j'ai changé le redirect_uri de la devloper page de la page en direct, 191 Erreur est survenue.

Alors j'ai supprimé l' $params:

$facebook->getLoginUrl();

Après l'application-demande maintenant FB redirige vers l'url d'application elle-même.f.e.: my.domain.com

Ce que je fais maintenant est de vérifier dans index.php de mon application si je suis à l'intérieur FB iframe ou pas. Si non je me rediriger vers le live de la page FB f.e.:

$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();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X