web-dev-qa-db-fra.com

Erreur API Facebook 191

J'essaie d'intégrer mon projet à Facebook. Au début, je fais quelques pas en essayant de me connecter, d’obtenir une session Facebook et d’obtenir des données d’utilisateur. Je le développe localement pour que mes paramètres d'application Facebook soient:

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

L'URL de la toile est la même que ci-dessus. Je n'ai pas spécifié de domaine de 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 de code côté serveur pour traiter les redirections, etc. Tout ce que j'ai fait est d'ajouter le SDK JavaScript basé sur le tutoriel de Facebook pour les sites Web.

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

76
musoNic80

METTRE À JOUR:
Pour répondre à l'API Code d'erreur: 191
Le redirect_uri doit être égal (ou relatif) à l'URL du site.
enter image description here

Astuce: Utilisez des URL de base au lieu d'URL complètes pointant vers des pages spécifiques. 

NOT RECOMMENDED: Par exemple, si vous utilisez www.mydomain.com/fb/test.html comme URL de votre site et si vous avez www.mydomain.com/fb/secondPage.html comme redirect_uri, l'erreur 191 s'affichera. 

RECOMMANDED: Par conséquent, réglez votre URL de site sur une URL de base telle que: www.mydomain.com/ OR www.mydomain.com/fb/.


Je suis passé par l’exemple d’application Facebook Python aujourd’hui, et j’étais choqué il indiquait clairement que vous pouvez utiliser http://localhost:8080/ en tant que URL du site si vous développez localement:

Configurez l'URL du site et pointez-le sur votre serveur Web. Si vous êtes en développant localement, vous pouvez utiliser http: // localhost: 8080/

Bien que je étais bien sûr que vous ne puissiez pas le faire, sur la base de ma propre expérience (très vieux test cependant), il semble que vous ayez réellement PEUT tester votre application Facebook localement!

J'ai donc choisi une de mes anciennes applications et modifié son nom, l'URL du site et l'URL de la toile: URL du site: http://localhost:80/fblocal/

J'ai téléchargé le dernier Facebook PHP-SDK et je l'ai jeté dans mon dossier xampp/htdocs/fblocal/.

Mais j'ai la même erreur que la tienne! J'ai remarqué que XAMPP effectuait une redirection automatique vers http://localhost/fblocal/. J'ai donc changé le paramètre en http://localhost/fblocal/ et l'erreur a disparu MAIS j'ai dû supprimer l'application (depuis paramètres de confidentialité ) et réinstallez mon application et voici les résultats:
alt text

Après cela, j'ai demandé l'autorisation publish_stream et j'ai pu publier sur mon profil (à l'aide du kit de développement PHP): 

$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

88
ifaour

Pour moi, c'était un domaine d'application manquant. Allez dans l'application et assurez-vous que la racine de votre site est configurée en tant que domaine d'application. Voir la capture d'écran.

app domains is in the basic settings of your app

11
Mike_K

C'est juste à cause d'une erreur d'URL.

L'URL du site Web spécifié doit être correct.

J'ai mentionné l'URL du site Web comme http://localhost:3000/ Et le domaine comme localhost, mais dans mon navigateur, j'utilisais le http://0.0.0.0:3000/.

Lorsque j'ai exécuté le serveur en tant que localhost:3000, le problème a été résolu.

Comme je l'ai mentionné, l'URL du site en tant qu'hôte local Facebook sera redirigé vers le même. Si nous exécutons 0.0.0.0:3000, l'erreur "" L'URL donnée n'est pas autorisée par la configuration de l'application ".

8
devudilip

J'avais également le même problème lorsque j'utilisais la méthode d'authentification de Facebook . Mais je résous ce problème en suivant les modifications apportées à l'API de Facebook (Apps >> My App >> Basic).

  1. J'ai enlevé l'URL que j'ai donné dans ===> App sur Facebook (Canvas URLs)
  2. J'ai donné l'URL du site uniquement dans ===> Site Web avec connexion Facebook option

Ensuite, j'ai donné cette AppId et App Secret dans ma page Web.

Donc, en cliquant sur le bouton de connexion, il demande les autorisations d'accès, puis il le redirige pour donner l'URL ( Site Web avec Facebook Login ).

2
ShivarajRH

Travailler localement ... Je ne pouvais pas utiliser l’API de flux, mais l’API de partage fonctionnait assez rapidement sans aucun problème.

0
chim

Avait le même problème:

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

Lorsque j'ai changé le redirect_uri de la page devloper vers la page en direct, une erreur est survenue.

J'ai donc supprimé les $ params:

$facebook->getLoginUrl();

Après la demande de l'application maintenant, le FB redirige vers l'URL de l'application elle-même f.e .: my.domain.com

Ce que je fais maintenant, c’est de vérifier index.php de mon application si je suis dans FB iframe ou non. Si ce n'est pas le cas, je redirige vers la page FB en direct 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();
}
0
ggzone

Quelque chose que j'aimerais ajouter, puisque c'est l'erreur 191 première question sur Google:

Lors de la redirection vers facebook au lieu de votre propre site pour une demande signée, vous pouvez rencontrer cette erreur si l'utilisateur a une navigation sécurisée et si votre application redirige vers facebook sans SSL.

0
Barnaba

dans la page de l'application facebook, allez à l'onglet de base. trouver l'option "Site Web avec Facebook Login".

vous trouverez l'URL du site: saisissez l'URL complète (par exemple http://mywebsite.com/MyLogin.aspx ). c'est l'URL que vous pouvez utiliser avec l'appel, comme Si l'ID APP est 123456789

https://graph.facebook.com/oauth/authorize?client_id=123456789&redirect_uri=http://MyWebsite/MyLogin.aspx&scope=publish_actions

0
Partha

J'ai également remarqué que même si vous spécifiez votre site Web sous section - Site Web avec connexion Facebook -> URL du site, par exemple. http://example.com , mais si votre section Domaines d'application est vide et que vous ouvrez le site Web en tant que www.example.com, vous obtiendrez également cette erreur. Pour éviter cela dans la section "Domaines des applications", écrivez exemple.com, qui autorisera les sous-domaines, tels que www.exemple.fr, quelque chose.exemple.fr, etc. 

0
dav

J'ai résolu ce problème en passant l'URL de redirection à la FacebookRedirectLoginHelper::getAccessToken() dans ma fonction de rappel:

Changer de 

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

à

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

Je me développe sur une boîte de dialogue et il semble que FacebookRedirectLoginHelper::getCurrentUrl() a eu des problèmes pour générer une URL valide. 

0
Kyrre