Facebook OAuth "Le domaine de cette URL n'est pas inclus dans le domaine de l'application"

248

Permettez-moi d'abord de dire que j'ai cherché une réponse à cette question depuis un certain temps ...

J'essaie de configurer Facebook OAuth pour qu'il fonctionne avec mon application en cours de développement local sur ma machine. Tout fonctionnait parfaitement avec l'autorisation Facebook JUSQU'À ce que je passe de l'utilisation localhostà un autre nom de domaine (toujours local sur ma machine). Maintenant, j'obtiens l'erreur suivante.

Impossible de charger l'URL: le domaine de cette URL n'est pas inclus dans les domaines de l'application. Pour pouvoir charger cette URL, ajoutez tous les domaines et sous-domaines de votre application au champ Domaines d'application dans les paramètres de votre application.

Mon fichier d'hôtes contient 127.0.0.1 photovote.dev (fonctionne parfaitement)

Ma redirection dans mon application (via Socialite) est http://photovote.dev/auth/facebook/callback

Dans mes paramètres d'application Facebook ...

  • mon domaine d'application est photovote.dev
  • mon URL de site est http://photovote.dev/
  • mon URI de redirection OAuth valide est http://photovote.dev/auth/facebook/callback

L'URL au moment du message d'erreur est ..

https://www.facebook.com/v2.5/dialog/oauth?client_id=XXXXXXXXXXXXXXX&redirect_uri=http%3A%2F%2Fphotovote.dev%2Fauth%2Ffacebook%2Fcallback&scope=email&response_type=code&stateW0ZtcFKK

Je ne sais pas quel est le problème ...

Capture d'écran 1
Capture d'écran

Capture d'écran 2 entrez la description de l'image ici

dangel
la source
3
Salut dangel, vous voudrez peut-être obscurcir votre FB client_id de ce post
a.benain
@dangel comment vous avez résolu ce problème? J'ai le même problème, mais je ne peux pas le résoudre.
Ghimire
@Ghimire, dans ma situation, j'avais changé l'URL et je n'ai pas mis à jour mon client \ secret. En lisant les solutions ci-dessous, il semble qu'il puisse y avoir plusieurs raisons différentes donnant toutes la même erreur.
dangel
@dangel vérifier cela. stackoverflow.com/questions/46626914/…
Ghimire

Réponses:

81

Cela se produit généralement si vous avez entré des informations erronées lors de la création de l'application sur Facebook. Ou avez-vous modifié l'URL d'une application existante?

Pouvez-vous revérifier les paramètres de votre APP sur cette page?

https://developers.facebook.com/apps

  1. Sélectionnez la bonne application et cliquez sur le bouton Modifier;

  2. Vérifiez que les URL et les chemins d'accès sont correctement saisis et pointent vers le site sur lequel vous avez installé le plugin Ultimate Facebook.

Lei Lionel
la source
3
Je viens de voir ce que vous avez dit à propos de "vous avez changé l'URL d'une application existante", c'est exactement ce qui s'est passé, et je suppose que cela a généré un nouveau client \ ID secret
dangel
Bonjour, j'essaie également d'implémenter fb oauth dans mon application. J'ai donné tous les détails sur l'application fb. Mais, l'erreur suivante apparaîtra lors de la redirection de rappel. InternalOAuthError: Échec d'obtention du jeton d'accès à Strategy.OAuth2Strategy._createOAuthError (D: \ node_tutorials \ fb \ node_modules \ passport-oauth2 \ lib \ strategy.js: 370: 17) à D: \ node_tutorials \ fb \ node_modules \ passport-oauth \ lib \ strategy.js: 166: 45 à D: \ node_tutorials \ fb \ node_modules \ oauth \ lib \ oauth2.js: 177: 18
Anand
Une autre chose à essayer qui a fonctionné pour moi: essayez de passer vos rappels de https à http. Cela implique de modifier à la fois le code qui appelle getLoginUrl () ainsi que de modifier les URL de rappel dans les paramètres de l'application. Les rappels n'ont jamais fonctionné avec HTTPS pour moi, pour une raison quelconque, malgré le site utilisant HTTPS.
Josh1billion
J'ai le même problème, mais lors de l'ouverture de la page localement; J'ai ajouté 127.0.0.1:8000 aux adresses autorisées, car c'est ainsi que mon installation easyphp est configurée, mais cela ne fonctionne toujours pas. Puis-je uniquement tester des scripts FB en ligne?!?
jumpjack
"cliquez sur le bouton" ummm quel bouton est-ce?
Alexander Mills
210

Dans le cas où quelqu'un tombe sur cela et recherche ces paramètres (comme je l'étais)

Vous devez

  1. Sur le côté gauche, cliquez sur "+ Ajouter un produit" et sélectionnez "Connexion Facebook" (c'était en haut pour moi)
  2. Voir les nouveaux paramètres disponibles sur le côté gauche
  3. Vous aurez maintenant ces paramètres OAuth sur ces "Paramètres du produit"

entrez la description de l'image ici

Informations supplémentaires: assurez-vous d'ajouter l'URL de rappel comme http://localhost:3000dans le Valid OAuth redirect URIschamp de la page des paramètres de Facebook Login

Craig Lambie
la source
22
Ce n'est pas ce à quoi fait référence le message d'erreur. Il existe un message d'erreur spécifique concernant les URI de redirection OAuth valides , ce qui n'est pas le cas ici. Le message fait clairement référence à Paramètres »De base» Domaines d'application. Cependant, le problème est que même si les domaines corrects sont remplis, le message d'erreur apparaît toujours.
fritzmg
À part le dictionnaire urbain @HakamFostok, Maths règne dans l'ordre supérieur pour la signification de LHS / RHS en.wikipedia.org/wiki/Sides_of_an_equation , en particulier dans le monde du codage.
Craig Lambie
9
Cela m'a corrigé. Même si j'avais correctement rempli le domaine, je n'avais pas ajouté d'URL de redirection. L'ajout de l'URL de redirection a résolu le problème. Il semble qu'au moment où FB envoie le mauvais message d'erreur pour ce problème.
Richard Garside
je travaille localement et c'est mon url 127.0.0.1/CM/public quel devrait être mon URI de redirection OAuth valide?
Youssef Boudaya
1
Cela a fonctionné pour moi dans l'api v2.7 et le commentaire de @ RichardGarside est exact. Je n'ai défini aucune valeur Valid OAuth Redirect URIset l'ajout de cette valeur de champ a résolu le mauvais message d'erreur FB relatif à la mise à jour de votre App Domains.
johnsampson
60

J'ai eu le même problème. Je l'ai résolu en ajoutant mon URI de redirection OAuth comme argument à l'appel de la fonction getAccessToken:

$redirectLoginHelper->getAccessToken("https://www.example.com/myfacebookcallback")

Si aucun argument n'est envoyé dans cette fonction, le SDK génère lui-même l'URI de redirection qui devrait fonctionner, mais dans mon cas, ce n'est pas le cas.

J'espère que cela aide quelqu'un.

Swoot
la source
2
C'est la seule façon dont je pourrais le faire fonctionner après avoir déplacé mon site Web de http à https. Même après avoir modifié tous les domaines dans les paramètres Facebook Api, cela ne fonctionnait tout simplement pas.
Chris
6
Ce devrait être la réponse acceptée. Résout le problème!
tormuto
Dans mon cas, l'url elle-même ne doit pas inclure de paramètres vides. Lorsque je donne "www.example.com?param" à getAccessToken, FB a toujours dit qu'il ne correspond pas à l'URI que j'ai donné à getLoginUrl, qui, je suis absolument sûr, est exactement le même. L'utilisation de "www.example.com" ne génère pas une telle erreur.
Chlind
2
Je vous remercie . résolu par cela - vraiment mauvais de facebook parce que toutes ces erreurs sont abstraites / ambiguës et vous ne savez pas trop où chercher
digitalzoomstudio
Cela répond à la question.
John
35

Assurez-vous que votre application est publique. Cliquez sur + Ajouter un produit Maintenant, allez aux produits => Facebook Connectez-vous maintenant, procédez comme suit:

URI de redirection OAuth valides: example.com/

Annuler l'autorisation de rappel: https://example.com/facebookapp http://unicodeitsolutions.com/

Sanjoy Kanrar
la source
1
À quoi sert-il Deauthorize Callback URL : https://example.com/facebookapp? Cela fonctionnera-t-il sans cela?
Jordan
L'annulation de l'URL de rappel n'est pas obligatoire ... lorsque l'utilisateur annule l'autorisation de notre application, Facebook nous envoie un ping par l'URL.
Sanjoy Kanrar
20

Voici ce que j'ai fait pour résoudre ce problème: entrez la description de l'image ici

Fondamentalement:

1) Activez « Connexion OAuth du navigateur intégré »

2) Désactivez " Utiliser le mode strict pour les URI de redirection " et entrez un URI de redirection comme je l'ai fait.

3) Laissez toutes les autres options telles quelles.

4) Enregistrez vos modifications.

5) Profitez :)

Bang Bang
la source
Cela l'a résolu pour moi. Je ne voulais pas rendre mon application publique car je ne faisais qu'un tutoriel et le testais localement. Merci @bangbang
PHBeagle
1
Pour moi, Utiliser le mode strict pour rediriger les URI ne peut pas être désactivé.
fdehanne
8

J'ai eu le même problème et il provenait d'un mauvais ID d'application client_id / Facebook.

Avez-vous basculé votre application Facebook sur "publique" ou "en ligne? Lorsque vous le faites, Facebook crée une nouvelle application avec un nouvel ID d'application.

Vous pouvez comparer la valeur du paramètre "client_id" dans l'url avec celle de votre tableau de bord Facebook.

guillaume.deslandes
la source
Tout ce que j'ai fait, c'est changer le domaine et l'URL du site pour qu'ils correspondent du passage de localhost à photovote.dev. J'ai mis à jour l'URI de redirection sur mon application et également dans les paramètres Facebook. Je pourrais juste essayer de créer une nouvelle application
dangel
hmm, je suppose que j'ai changé quelque chose dans les paramètres de l'application qui a généré un nouvel ID, car vous avez raison, il ne correspondait plus. Peut-être quand j'ai mis à jour l'URL du site? peu importe que cela fonctionne à nouveau
dangel
Cela a fonctionné pour moi. J'utilisais un ancien identifiant d'application en production.
Marcus W
8

La façon dont je l'ai corrigé: je suis allé dans la zone de texte URI de redirection OAuth valide et j'ai défini l' URL exacte , pas seulement le domaine :

avant: https://my-website.com

après: https://my-website.com/facebookoauth/facebooklogin

(l'url peut être différente dans votre cas, vérifiez-la dans la barre d'adresse du navigateur).

Cela était dû au paramètre Utiliser le mode strict pour les URI de redirection, qui était verrouillé en position Oui.

Cosmin
la source
Merci beaucoup pour cela. Cela a résolu mon problème
vickris
7

Impossible de charger l'URL: le domaine de cette URL n'est pas inclus dans les domaines de l'application. Pour pouvoir charger cette URL, ajoutez tous les domaines et sous-domaines de votre application au champ Domaines d'application dans les paramètres de votre application.

J'ai eu ce problème aujourd'hui, je trouve la documentation et le SDK Facebook irrespectueux et arrogants envers les autres développeurs pour le moins.

En plus d'avoir les "domaines d'application" dans deux endroits différents sans trop d'informations (3 si vous ajoutez une plate-forme "Web"), vous devez également aller dans les produits d'application / connexion Facebook / paramètres et ajouter votre URL de redirection sous URI de redirection OAuth valides

L'erreur indique RIEN sur les paramètres OAUTH.

adrianTNT
la source
1
Oui, je devais aussi faire cette étape supplémentaire. Je partage votre point de vue sur la documentation!
Magnus Smith
6

En 2017-10.

Solution qui a résolu mon problème.

Actuellement, FB rend cette surprise.

... Paramètres OAuth du client de l'application. Assurez-vous que le client et la connexion Web OAuth sont activés ...

entrez la description de l'image ici

Les paramètres à régler se trouvent ici https://developers.facebook.com/apps/[your_app_itentifier 3/8/ fb- login/ .

La barre oblique de fin est importante. Ils doivent correspondre dans le code de votre application et dans les paramètres d'administration FB. Il s'agit donc d'une configuration quelque part dans votre code (voir ci-dessous comment obtenir un nom de domaine pour une application de développement):

{
    callbackURL: `http://my_local_app.com:3000/callback/`, // trailing slash
}

et ici

entrez la description de l'image ici

Pour obtenir un nom de domaine pour une application sur une machine Windows locale, modifiez le hostfichier. Les noms personnalisés sont bons pour se débarrasser de tous ceux localhost:8080, 0.0.0.0:30303, 127.0.0.0:8000, ainsi de suite. Parce que certains services tiers comme FB ne parviennent pas toujours à vous permettre d'utiliser des 127.0.0.0noms.

Sur Windows 10, le hostsfichier est ici:

C:\Windows\System32\drivers\etc\hosts

Sauvegardez le fichier initial, créez une copie avec un nom différent (ne fonctionne pas dans Windows CMD natif. J'utilise Git pour Windows , il a de nombreuses commandes Unix)

$ cp hosts hosts.bak

Ajoutez ceci dans hosts

127.0.0.1  myfbapp.com # you can access it in a browser http://myfbapp.com:3000
127.0.0.1  www.myotherapp.io # In a browser http://www.myotherapp.io:2020

Afin de se débarrasser de la partie portuaire, :3000configurez NGINX, par exemple.

vert
la source
Merci pour cela, je ne savais pas que la barre oblique était nécessaire!
Andy Holmes
le 11 mai 2018, l'URL de rappel sur les applications et les URI de redirection oauth valides sur facebook doivent être identiques. et https est indispensable.
Yuda Prawira
La barre oblique de fin me fait gagner du temps. Merci!
HyoJin KIM le
6

Cliquez ici Code Project ! Son exemple de projet Code. Ça marche pour moi

entrez la description de l'image ici

Ambala Chandrashekar
la source
6

La plupart du temps, il se produit sans insérer l' URL de redirection OAuth valide appropriée dans la section produit du tableau de bord FB. Je suggère de suivre mes étapes ci-dessous

01. Vérifiez que le réglage de base de l'application est correct avec l'image ci-dessous avec vous

entrez la description de l'image ici

02. vérifiez si vous avez ajouté un produit

Sinon, vous pouvez facilement ajouter un produit de connexion en cliquant sur + sinus comme je le montre dans le soufflet.

Si oui, je viens juste de rentrer dans le réglage du produit. entrez la description de l'image ici

03. La vérification si vous avez fourni une URL de redirection OAuth valide

Son simple signifie ce qui devrait après la connexion.Il n'est autre que celui de votre rappel URl.Vous pouvez voir dans mon image ci-dessous que j'ai ajouté plusieurs URL de redirection. entrez la description de l'image ici

  1. ont encore des problèmes Regardez ma vidéo--> https://www.youtube.com/watch?v=mdhubrzV5y8&t=3s
Rumesh Madushanka
la source
Question de 2 ans, et les liens vers des sites externes ne devraient pas être le contenu principal d'une réponse.
zzxyz
6

Facebook a récemment désactivé le bouton bascule pour `` Utiliser le mode strict pour rediriger les URI '', vous devez donc ajouter l'URI exact qui est appelé lorsque vous appuyez sur le bouton de connexion. Pour mon cas, c'était comme indiqué sur la capture d'écran. Cela a résolu le problème pour moi :)

entrez la description de l'image ici

Bhaskar Choudhary
la source
5

Dans mon cas, je devais uniquement activer la connexion OAuth du navigateur intégré

entrez la description de l'image ici

sh6210
la source
J'utilisais également la connexion par navigateur, donc le même problème auquel j'étais confronté. Il y a aussi une zone de saisie ci-dessous où j'ai dû mettre mon URI de redirection exacte.
absin
4

Rien ne fonctionnait vraiment pour moi, jusqu'à ce que je mette à jour la version du SDK que j'utilisais. J'ai commencé avec 5.0. Même la version 5.4.0 ne fonctionnerait pas non plus. Lorsque j'ai mis à jour vers 5.6.2, cela a fonctionné sans faille, malgré le fait qu'il n'y ait rien dans les changelogs qui soit pertinent!

Ste_95
la source
1
J'ai exactement eu ce problème! J'utilisais "5.4.2" et je suis passé à "5.6.2"
John Smith
2

Cette option doit être activée dans le portail:

entrez la description de l'image ici

Daniel Krzyczkowski
la source
Merci. J'ai eu le même problème et c'est l'interrupteur que j'ai manqué.
timeon
Merci! Cela a également fonctionné pour moi (j'utilisais Google Firebase. J'ai également dû définir les "URI de redirection OAuth valides" sur l'URI de redirection OAuth qui m'a été fourni par Google pour mon projet.)
mwang25
2

Au cas où cela aiderait quelqu'un d'autre, cela a commencé à se produire pour moi sur un site plus ancien lorsque les "URI de redirection OAuth valides" sont devenus obligatoires. Le site utilisait toujours le SDK PHP V4 et le problème a été résolu pour moi en passant au SDK V5.

Kenneth Spencer
la source
1

Dans la section Domaine d'application, vous écrivez votre domaine d'application, mais vous devez également ajouter votre domaine de connexion, c'est-à-dire le nom de la page html où vous demandez à l'utilisateur de se connecter. Dans mon cas, je le testais sur localhost et la route de connexion était localhost / login, si je ne mets http://localhost.com que dans la section domaine d'application, j'obtiens cette erreur. Mais après avoir ajouté http: //localhost/login.com , l'erreur a été corrigée. et les paramètres de l'application ont également changé dans la nouvelle version du SDK, dans laquelle il n'y a pas d'option pour la route de redirection OAuth. Vous devez attribuer la route de redirection directement du côté serveur, après avoir réussi à obtenir le jeton OAuth.

Anum Sheraz
la source
1

Cela a fonctionné pour moi:

Voici l'essentiel à comprendre: Facebook vérifiera toujours le domaine " WWW ". Assurez-vous donc que www.votre_domaine.dev fonctionne d'abord sur votre navigateur.

Il est possible que si vous avez plusieurs hôtes virtuels sur votre serveur local, certains autres hôtes virtuels remplacent " www.votre_domaine.dev ". Veuillez donc vérifier cela. Apache choisira la PREMIÈRE définition de domaine (ou ports, ou quelque chose en ces termes - je ne suis pas un expert en la matière, mais appris par des erreurs). Une solution rapide et simple pour remplacer cet hôte virtuel est de mettre " www.votre_domaine.dev définition d'hôte virtuel sur le haut du fichier « httpd-vhosts.conf ».

Allez dans " /apache/conf/https-vhosts.conf " et placez-le tout en haut du fichier:

<VirtualHost *:80>
<Directory "C:/your_app_folder_path/">
    Options FollowSymLinks Indexes
    AllowOverride All
    Order deny,allow
    allow from All
</Directory>
ServerName your_domain.dev
ServerAlias your_domain.dev
DocumentRoot "C:/your_app_folder_path/"
</VirtualHost>

###### FOR SSL #####
<VirtualHost *:443>
    DocumentRoot "C:/your_app_folder_path/"
    ServerName your_domain.dev
    ServerAlias www.your_domain.dev
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "conf/ssl.key/server.key"
    <Directory "C:/your_app_folder_path/">
        Options All
        AllowOverride All
        Require all granted 
    </Directory>
</VirtualHost>

Suivant: Si vous utilisez le système Windows, modifiez votre fichier "hosts" dans "C: \ Windows \ System32 \ drivers \ etc" en ajoutant deux lignes:

127.0.0.1 your_domain.dev
127.0.0.1 www.your_domain.dev

Suivant: Redémarrez votre serveur Apache et tout devrait fonctionner maintenant.


J'espère que cela vous aidera et vous fera gagner du temps. J'ai perdu presque toute une journée à chercher sur le Web et je me suis arraché les cheveux et je n'ai rien trouvé d'utile jusqu'à ce que je trouve cela.

Altin
la source
1

J'ai eu le même problème ..... le issu est dans la version PHP SDK 5.6.2 et le correctif éditait le fichier suivant:

facebook\src\Facebook\Helpers\FacebookRedirectLoginHelper.php

changer cette ligne

$redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl,['state','code']);

à

$redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl,['state','code','enforce_https']);

Chevelle
la source
0

Cette même erreur Facebook m'est arrivée dans l'environnement de production. La raison en était que j'avais 2 applications enregistrées sur Facebook (Local, Production) mais j'ai codé en dur l'ID de l'application locale dans le code source et j'ai oublié de le changer pour l'ID de l'application de production avant le déploiement.

La meilleure pratique veut que vous ne devriez pas avoir l'ID d'application codé en dur dans le code source, mais si vous le faites, ne faites pas disparaître vos différents ID d'application Facebook comme je l'ai fait par erreur.

Jimmy Shaw
la source
0

Utilisation de mon propre serveur local.

Ajouter simplement http://localhost/my-sitecomme URL dans:

https://developers.facebook.com/apps/YOUR-APP-ID/fb-login/

travaillé pour moi.

Reece Kenney
la source
0

Le problème et les réponses continuent de changer à mesure que FB resserre la procédure de connexion. Aujourd'hui, j'ai commencé à recevoir ce message d'horreur "Le domaine de cette URL n'est pas inclus dans les domaines de l'application. Pour pouvoir charger cette URL, ajoutez tous les domaines et sous-domaines de votre application au champ Domaines d'application dans les paramètres de votre application."

La réponse était: maintenant FB veut l'URI de redirection complète. Donc pour moi, là où c'était juste https://www.example.com, il veut maintenant https://www.example.com/auth/facebook/callback . Cela doit aller dans le champ "URIs de redirection OAuth valides" (développeur / connexion Facebook-> paramètre)

Peter Robinson
la source
0

Connexion Facebook -> Paramètres -> URI de redirection OAuth valides -> insérez les domaines de votre URL de redirection, rappelez-vous que vous devez ajouter «https» ou http. par exemple: si votre URL de redirection est https://xxx.xxx.com/path/callback.do , il vous suffit de saisir https://xxx.xxx.com/ , ça me va.

刘 同 彬
la source
0

première étape: utilisez toutes les URL de certificat https://example.in ou ssl, ne pas utiliser http://example.in

deuxième étape: paramétrage de l'application faceboook -> paramétrage de base -> ajouter votre domaine ou sous-domaine

troisième étape: paramètre de connexion à l'application faceboook -> URI de redirection OAuth valides -> ajoutez votre URL de redirection après la connexion

quatrième étape: configuration de l'application faceboook-> configuration avancée-> Gestionnaire de domaine-> ajoutez votre nom de domaine

faites toute cette étape, puis utilisez votre identifiant d'application, la version de l'application, le secret de l'application pour la configuration

ganesh avhad
la source
0

sur l'extension de connexion sociale Magento 2, vous devez copier les URI de redirection OAuth valides à partir du panneau et ajouter le lien vers le champ URI de redirection OAuth valide dans la page Paramètres OAuth du client sur developers.facebook.com

Felmez
la source
0

Si votre jeu n'a pas de serveur / site (par exemple si vous développez pour Gameroom comme moi) - ajoutez " https://apps.facebook.com/xxxxxxxxxxxxxxxxx " (mettez votre ID d'application au lieu de "xxxxxxxxxxxx") dans "URIs de redirection OAuth valides ".

Andrey
la source
-1

La plupart des réponses concernent l'ajout de l'URL au domaine de l'application, mais lorsque vous travaillez pour une entreprise, vous n'avez pas ces accès.Pour ceux-ci, vous pouvez contourner cela en créant simplement un hôte virtuel et en faisant une entrée d'hôte.


ajoutez ceci dans le fichier hôte (/ etc / hosts) 127.0.0.1 www.your_domain.com

créer un hôte virtuel. Je l'ai utilisé pour l'hôte virtuel apache

ServerAdmin webmaster @ localhost ServerName www.your_domain.com

    ProxyPass / http://localhost:5006/
    RewriteMap  lc int:tolower
    LogLevel debug

ashishyadaveee11
la source