web-dev-qa-db-fra.com

La boîte de dialogue Facebook oauth indique "Une erreur est survenue. Veuillez réessayer ultérieurement."

J'ai copié le code HTML ci-dessous à partir de la page de développeur Facebook de Facebook pour les sites Web et remplacé APPID par mon identifiant d'application. Je mets cette page sur mon serveur web dev. Si je navigue vers la page, le bouton de connexion sera correctement rendu. Mais en cliquant sur le bouton de connexion, vous ouvrez la page de connexion Facebook qui indique "Une erreur est survenue. Veuillez réessayer ultérieurement."

Je dois manquer quelque chose de fondamental. Des idées?

<html>
<head>
  <title>My Facebook Login Page</title>
</head>
<body>
  <div id="fb-root"></div>
  <script>
    window.fbAsyncInit = function() {
      FB.init({
        appId      : 'APPID',
        status     : true, 
        cookie     : true,
        xfbml      : true,
        oauth      : true // removed a comma after 'true' as it generates a script error
      });
    };
    (function(d){
       var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
       js = d.createElement('script'); js.id = id; js.async = true;
       js.src = "//connect.facebook.net/en_US/all.js";
       d.getElementsByTagName('head')[0].appendChild(js);
     }(document));
  </script>
  <div class="fb-login-button">Login with Facebook</div>
</body>
</html>

Une enquête plus approfondie montre que cela fonctionne correctement dans Chrome, Firefox et Safari et qu’il échoue dans IE9.

Ceci correspond à l'URL indiquée dans Chrome./ https://www.facebook.com/login.php?api_key=255367907914&skip_api_login=1&display=popup&cancel_url=https%3A%2F%2F%2Fs-static.ak. fbcdn.net% 2Fconnect% 2Fxd_proxy.php% 3Fversion% 3D3% 26error_reason% 3Duser_denied% 26error% 3Daccess_denied% 26error_service de classement du classeur% 3DBidour% 2Byour% 2Byour% 2bb .r% de% F3% 2FF314f6d52% 26relation% 3Dopener% 26transport% 3Dpostmessage% 26frame % 3Dhttps% 253A% 252F% 252Fs.Assistance.ak.fat.k.en.Str.Coordonne% 253F3. % 253Dopener% 2526transport% 253Dpostmessage% 2526frame% 253Df48d09da8% 26sdk% 3Djoey% 26display% 3Dpopup% 26response_type% 3Dtoken% 252Csigned_request% 26domaine% 3Dsami.test. eu% 26fbconnect% 3D1% 26from_login% 3D1% 26client_id% 3D255367907914 & rcount = 1

Ceci est l'URL dans IE9 qui provoque l'erreur: https://www.facebook.com/dialog/oauth?api_key=255367907914&app_id=255367907914&lang=fr 3A% 2F% 2Fs-static.ak.fbcdn.net% 2Fconnect% 2Fxd_proxy.php% 3Fversion% 3D3% 23cb% 3DF 3Dflash% 26frame% 3Df2539c36bc13734 & response_type = token% 2Csigned_request & sdk = joey

14
Sami

Je l'ai compris après avoir eu un peu de temps pour une session de débogage.

J'utilisais un faux domaine pour développer mon application localement. Le domaine de mon fichier d'hôtes locaux est mappé sur 127.0.0.1 (je le faisais pour des raisons indépendantes de ce poste).

Il s'avère que lorsque j'accède à la page de connexion à Facebook, IE passe 127.0.0.1 dans l'URL à facebook en tant qu'URL de retour. 127.0.0.1 ne correspond pas à l'URL que j'avais configurée pour mon application dans Facebook. La page de connexion affiche donc le message "Une erreur est survenue" (cela aurait été agréable de recevoir un message d'erreur approprié).

D'autres navigateurs envoient mon faux domaine en tant qu'URL de retour et ils n'ont aucun problème.

Dans tous les cas, j'ai arrêté d'utiliser le faux domaine et je me suis assuré que le nom de domaine correspond exactement à la configuration de Facebook. Le problème a maintenant disparu.

Merci pour toutes les réponses. La suggestion de zerkms de comparer les URL a finalement abouti à la solution.

4
Sami

RESOLU (du moins pour moi): je n'avais pas de "Site Web avec connexion Facebook" configuré dans les paramètres de mon application facebook, car j'avais créé une application à onglet de page. Pas de site externe. Malheureusement, j’ai procédé au débogage sans l’iFrame de Facebook autour de l’application -> c’est la raison.

Pour me débarrasser de l'erreur, j'ai renseigné "Site Web avec connexion Facebook" et saisi l'entrée "Domaines de l'application" dans les paramètres de l'application.

Étrange que ce problème ne se produise que dans IE!

4
stoefln

assurez-vous que vous n'êtes pas (en attente) en tant que développeur/administrateur dans les paramètres de l'application.

2
henrikpp

Je reçois cette erreur lorsque le AppID est incorrect. Vérifiez votre AppID.

1
Eric Cope

Je l’obtiens parce que SSL n’est pas configuré sur mon serveur local/ https://mywebsite.in/ . ne fonctionnait pas. Ensuite, dans mon application, j'ai activé le mode bac à sable et supprimé l'URL sécurisée, telle que l'URL de la toile sécurisée.

Remarque: lorsque vous activez le mode sandbox, seul le créateur de l'application peut accéder à la connexion à Facebook. D'autres utilisateurs seront en dessous du message

An error occurred. Please try again later.
1
Kumar Soneta

SOLUTION MISE À JOUR: Dans la configuration de votre application FB, vous devez ajouter une plate-forme de site Web avec le jeu d'URL de votre site Web. Ensuite, vous pouvez ajouter des domaines d'application que j'ai définis au domaine de base de notre site Web (par exemple, pour une URL telle que http://www.mycoolwebsite.com, utilisez simplement mycoolwebsite.com).

New FB Settings Screenshot

IMPORTANT: Pour que cela fonctionne, vous devez utiliser un sous-domaine de l'URL de votre application pour votre développement local. Vous pouvez le faire facilement en modifiant votre fichier hosts sur votre ordinateur de développement pour utiliser un sous-domaine inexistant de votre site Web, tel que local.mycoolwebsite.com. Vous n'avez qu'à "modifier le fichier d'hôtes" sur Google pour votre plate-forme (par exemple, mac/windows) si vous ne savez pas comment faire.

0
munsellj

Etant donné que c'est IE spécifique, la réponse a toujours été (bien 99,5% du temps) que votre serveur n'envoie pas d'en-têtes p3p. Voir http://www.hanselman.com/blog/The ImportanceOfP3PAndACompactPrivacyPolicy.aspx pour obtenir des informations sur la manière de configurer ces correcteurs afin que IE joue Nice.

0
DMCS

j'ai eu le même problème, mais ici le nom de domaine peut être le problème. pendant que nous créons Facebook appid, dans cette section "Site Web avec connexion Facebook", nous devons spécifier correctement "URL du site". Cela signifie que lorsque nous testons l'application en local, nous devons mentionner l'URL sous la forme "http: // localhost: // {portnumber}" "et si nous nous exécutons sur le serveur, nous devons spécifier l'URL réelle telle que" http: // mywebsite. com ".

0
tiru