2011-04-18 4 views
1

Je me demande comment utiliser le javascript de facebook dans une application de toile (qui utilise le facebook C# sdk).Utiliser facebook javascript sdk dans une application iframe

Je veux envoyé à l'utilisateur d'un formulaire de demande avec un appel comme

FB.ui({ 
    method: 'apprequests', 
    message: 'You should learn more about the', 
}, Log.info.bind('send-to-many callback')); 

Dans mon site Masterpage j'ai le code suivant avant la balise de corps d'extrémité:

<div id="fb-root"> 
</div> 
<script src="http://connect.facebook.net/en_US/all.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    FB.init({ 
     appId: 'AppId', cookie: true, 
     status: true, xfbml: true 
    }); 

</script> 

Mais d'une certaine manière, il briser toute l'application. L'application n'est plus dans l'iframe de facebook.

Il vient d'être chargé comme propre site Web.

Quelle est la meilleure façon de intégrer le js sdk dans une telle application de canevas (ASP.NET MVC 2)?

+0

La valeur par défaut action pour FB.ui() est d'ouvrir une fenêtre de dialogue contextuelle pour l'envoi de requêtes. Vous sortez en quelque sorte de l'iframe facebook, en utilisant probablement top.location.href dans le rappel quelque part. Il n'y a pas d'étapes supplémentaires pour utiliser js sdk pour une application de dessin dont je suis conscient. – DannyKK

Répondre

1

Je viens d'essayer votre scénario dans mon application Canvas. J'ai essayé à la fois de cliquer sur le lien "Envoyer des demandes d'application" à la fois depuis l'URL de l'application http://apps.facebook.com/myappname et depuis l'URL de mon serveur: http://myserver/mypage.aspx. Pour moi, ils travaillent tous les deux. En cliquant sur ce bouton, je reçois la boîte de dialogue et je peux inviter mes amis à utiliser l'application (je ne suis pas redirigé en dehors du canevas).

Je ne sais pas comment votre enregistreur (Log.info.bind('send-to-many callback'));) fonctionne, mais je voudrais essayer de le retirer de votre code.

Voici le code que je l'utilise dans mon MasterPage:

<body> 
<div id="fb-root"></div> 
    <script type="text/javascript"> 
     window.fbAsyncInit = function() { 
      FB.init({ appId: '<%= ConfigurationManager.AppSettings["fbAppId"].ToString() %>', 
       status: true, 
       cookie: true, 
       xfbml: true 
      }); 

      //Autoresize iFrame     
      FB.Canvas.setAutoResize(); 
     }; 
    (function() { 
     var e = document.createElement('script'); e.async = true; 
     e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js#xfbml=1'; 
     document.getElementById('fb-root').appendChild(e); 
    }()); 

function sendAppRequest() { 
    FB.ui(
      { 
       method: 'apprequests', 
       message: 'Learn more' 
      } 
      ); 
     } 
    </script> 
    <div id="content"> 
     <a href="javascript:void(0);" onclick="sendAppRequest()">Send App Requests</a> 
    </div> 
</body> 

Peut-être que pour moi cela fonctionne, parce que j'utilise fbAsyncInit ... ne sais pas, espère que cela aide ...

Questions connexes