fr en

Unable to get value of the property 'closed': object is null or undefined lors du login en local avec Internet Explorer

2012-09-13 2 Min. lecture Développement Web Javascript Aymeric

Si vous souhaitez développer un site qui met en place de l’authentification Facebook, vous allez surement être confronté à ce problème sous Internet Explorer.

En effet, la configuration par défaut d’Internet Explorer pour les sites intranet pose problème lors de l’authentification via le SDK Javascript de Facebook.

Le code :

<div id="fb-root"></div>
<pre>
<script type="text/javascript">// <![CDATA[
   window.fbAsyncInit = function () {
       FB.init({
           appId: 'VOTRE_APPID',
           channelUrl: '//CHANNEL_URL', // Channel File
           status: true, // check login status
           // enable cookies to allow the server to access the session
           cookie: true, 
           xfbml: true // parse XFBML
       });

       // whenever the user logs in, we tell our login service
       FB.Event.subscribe('auth.login', function () {
           alert('OK');
       });
   };
   
   (function () {
       var e = document.createElement('script');
       e.src = document.location.protocol + 
               '//connect.facebook.net/en_US/all.js';
       e.async = true;
       document.getElementById('fb-root').appendChild(e);
   } ());
// ]]></script>

<fb:login-button perms="email" size="large"></fb:login-button>

Sous Firefox ou encore Chrome, lorsque vous cliquez sur le bouton de connexion, un pop-up apparait vous demandant de vous authentifier sur Facebook. Après la connexion le pop-up se ferme et le message “OK” apparait à l’écran.

Sur Internet Explorer, le pop-up de login fonctionne aussi mais après l’authentification, une fenêtre blanche s’ouvre avec pour URL

http://www.facebook.com/plugins/close_popup.php?reload

et l’erreur javascript :

SCRIPT5007: Unable to get value of the property 'closed': object is null or undefined

Pour corriger cette erreur, rendez-vous dans les options internet d’Internet Explorer > onglet S****écurité > Séléctionner Local intranet et cochez la case “Enable Protected Mode”.

Internet options

A noter que ce problème ne se produit que parce que l’URL de votre site en développement est http://localhost…. Après livraison sur un environnement de production, cette configuration n’est plus nécessaire.

Le bug original sur le site Facebook : https://developers.facebook.com/bugs/342690645808882?browse=search_500fe1cbd36290f86778869