Lorsque j'essaie de me connecter avec une application Facebook, 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 de l'application dans les paramètres de votre application.
Comme vous pouvez le voir sur l'image suivante:
URL: http://www.facebook-php-test.com
Vous trouverez ci-dessous la configuration que j'ai définie sur mon application Facebook.
(Remarque: pour des raisons de confidentialité, j'ai modifié les valeurs de App ID
et App Secret
sur l'image)
Le code de cet exemple d'application de base se trouve sur ce référentiel GitHub:
https://github.com/zeuscronos/facebook-php-test.com
Je ne sais vraiment pas pourquoi il est dit que the domain of this URL isn't included in the app's domains
alors qu’il est réellement là.
Sur le terrain: App Domains
j'ai essayé avec les deux domaines en même temps:
mais pas de succès.
L'URL de connexion générée est la suivante:
J'ai configuré le domaine: facebook-php-test.com
en tant qu'hôte virtuel sur un serveur Apache.
Je dois dire que j'ai beaucoup travaillé avec le Facebook PHP SDK
et que c'est la première fois que je lutte avec cela. En fait, j'ai eu ce problème avec une autre grosse application avec laquelle je travaillais, puis après quelques heures à tenter de résoudre le problème, j'ai créé cette application factice pour essayer de déterminer la cause du problème.
J'ai essayé beaucoup de choses sans succès.
Une idée sur la façon de résoudre ce problème?
Merci.
EDIT 01
Suite à la suggestion de Mr.Geeker
commentaire, j’ai fait ce qui suit ...
Ajout du produit: Facebook Login
et configuré comme ci-dessous:
Enfin, je pouvais enfin aller de l'avant et on m'a demandé des autorisations:
Mais malheureusement, après avoir accordé des autorisations, j'ai obtenu ce qui suit:
Une idée sur la façon de continuer à partir de ce point?
EDIT 02 - SOLUTION
J'ai fini de désactiver l'option: Use Strict Mode for Redirect URIs
sous Client OAuth Settings
. Ils disent que c'est strongly recommended
a cette fonctionnalité On
mais je ne pouvais pas que cela fonctionne avec cette On
.
A propos, j'ai aussi désactivé: Client OAuth Login
car mon application ne l'utilise pas.
Enfin, la seule fonctionnalité que j'ai activée sous: Client OAuth Settings
est: Web OAuth Login
.
Facebook définit maintenant certaines fonctionnalités comme des plugins. Dans la partie gauche, sélectionnez Produits et ajoutez un produit. Puis sélectionnez Facbook Login. Assez simple à partir de là, vous verrez toutes les options de Oauth apparaître.
Comme initialement répondu ici
En mars 2018, Facebook a mis à jour l'API et a forcé toutes les applications à garder le mode strict activé.
Pour que cela fonctionne, vous devez inclure l'URL de rappel complète dans le champ Valeurs URI de redirection OAuth valides. Si vous redirigez vers " https://www.example.com/facebook/callback ", l'URI complet doit être inclus (sans paramètre):
Le domaine doit être défini dans les domaines de l'application et les champs URL du site Web sur la page des paramètres de base:
Si aucune de ces solutions ne fonctionne et que le message "Impossible de charger l'URL: le domaine de cette URL n'est pas inclus dans les domaines de l'application". le message continue de s'afficher, vérifiez si vous disposez de la dernière version du SDK. Je pourrais le faire fonctionner après la mise à jour de PHP SDK de la version 5.5 à 5.6.2
J'utilise PHP 5.5 et j'ai trouvé le bogue.
PHP API Facebook VERSION = '5.5.0', DEFAULT_GRAPH_VERSION = 'v2.9' ajoutait l'URI? Code = XXX dans ma page de rappel comme ceci:
mydomainExample.com/callbackFacebook.php? code = XXXXXXX
et j'ai changé le code source pour supprimer la chaîne après '?'. Maintenant, l'URL de rappel est seulement
mydomainExample.com/callbackFacebook.php
La correction peut être faite dans le fichier Facebook/Helpers/ FacebookRedirectLoginHelper.php dans la fonction getAccessToken . J'ai ajouté un ' if ' comme ci-dessous dans la ligne 226 et le numéro est parti:
$redirectUrl = $redirectUrl ?: $this->urlDetectionHandler->getCurrentUrl();
//the next 3 lines was added to avoid the bug (fixed)
if(strripos($redirectUrl, "?")){
$redirectUrl = substr($redirectUrl, 0, strripos($redirectUrl, "?"));
}
// At minimum we need to remove the state param
$redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl, ['state']);