2010-11-11 3 views
0

J'ai cette page de profil d'application Facebook:comment faire application Facebook installer/installable/auto-bookmarked

http://www.facebook.com/developers/editapp.php?app_id=122313254494566#!/apps/application.php?id=122313254494566

qui est associé à mon application Facebook basé iframe, Gem Spinner:

Ma compréhension de la lecture récente de la documentation de Facebook est que Facebook a changé au cours des derniers mois la méthode par laquelle les utilisateurs peuvent "bookmarker" une application ("bookmarking" si je comprends bien , est le processus d'ajout d'une icône pour l'application à la liste des applications de l'utilisateur sur le côté gauche de la page d'accueil Facebook). Ma compréhension est que le bookmarking est maintenant supposé se produire automatiquement la première fois que la personne utilise l'application.

Mais ce n'est pas le cas pour mon application. Quand vous y allez, il vous montre simplement la page de l'application et vous permet de jouer au jeu. Il n'y a pas de message de confirmation, comme je le vois avec d'autres applications, en vérifiant si je veux permettre à cette application d'accéder à diverses informations de mon compte Facebook. Et aucun signet/icône n'est ajouté à la liste des applications sur ma page d'accueil.

Donc, il me manque quelque chose. J'ai essayé de suivre les instructions ici: http://developers.facebook.com/docs/guides/canvas/, y compris la partie sur les signets, mais encore une fois, cette partie donne l'impression que cela se produira automatiquement.

Mon application a été approuvée pour le répertoire Facebook (bien qu'elle n'apparaisse pas encore dans les recherches du répertoire). Et ce n'est pas en mode "bac à sable".

Peut-être qu'il y a des appels d'API Facebook que je dois faire pour que l'utilisateur "installe" l'application. Si oui, j'aimerais savoir ce que c'est.

Répondre

0

Apparemment, la chose qui me manquait est qu'il est nécessaire d'appeler FB.login() à partir de votre code javascript afin que facebook mette "automatiquement" l'application à l'utilisateur. Je suppose que cela a un certain sens, car l'utilisateur doit être "authentifié" avec votre application avant que votre application (ou Facebook pour le compte de votre application) puisse apporter des modifications au compte de l'utilisateur, comme ajouter un signet. Néanmoins, il semblerait que cela ait pu être le cas en ajoutant le signet sans l'authentification, et en lisant certainement la documentation de Facebook, on pourrait penser que la simple visite de l'application créerait le signet, quelle que soit l'authentification.

Quoi qu'il en soit, un autre problème était de savoir comment rendre l'authentification facile. Il se peut qu'il y ait une façon plus intelligente et plus fonctionnelle de faire cela en utilisant les redirections de pages, mais il semble que cette nouvelle API veut afficher une fenêtre pop-up pour l'interface de connexion. Si cette fenêtre contextuelle est déclenchée par une pression sur un bouton (c'est-à-dire, un bouton indiquant/signifie "cliquez ici pour s'authentifier avec cette application"), vous obtenez la fenêtre contextuelle sans le message d'alerte du navigateur. Mais si vous appelez simplement la fonction FB.login() vous-même, vous obtenez l'avertissement terrible. Donc, pour contourner cela, mon code a déclenché l'événement button, et cela a fonctionné (au moins sur Firefox). Le code est:

<body> 
    <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 : 'your app id here', 
     status : true, // check login status 
     cookie : true, // enable cookies to allow the server to access the session 
     xfbml : false // parse XFBML 
     }); 
     function fblogin() { 
     FB.getLoginStatus(function(response) { 
      if (response.session) { 
      // logged in and connected user, someone you know 
      } else { 
      // no user session available, someone you dont know 
      FB.login(
       function(response) 
       { 
       if (response.session) 
       { 
        // user successfully logged in *or* user was already logged in 
        // *and* user has now been successfully authenticated for this app 
        // *and* a bookmark added by Facebook for this app 
       } 
       else 
       { 
        // user cancelled login 
       } 
       }); 
      } 
     }); 
     } 
    </script> 
    <a id="clickme" href="#" onclick="fblogin();return false;"></a> 

    ... the rest of your page here ... 

    <script type="text/javascript"> 
     document.getElementById("clickme").onclick(); 
    </script> 
    </body> 

Tout cela semble assez hackish, mais je ne sais pas une meilleure façon de faire automatiquement l'authentification se produire tout en évitant l'avertissement pop-up.

Il me semble que la fonction FB.login() est nommée de manière confuse. Cela semble vraiment signifier, "Si l'utilisateur n'est pas connecté, présentez l'interface de connexion.Mais si l'utilisateur est déjà connecté, ou si l'utilisateur se connecte avec succès à l'aide de l'interface utilisateur, authentifiez également l'utilisateur pour cette application, y compris en mettant en signet automatiquement cette application pour l'utilisateur. "Donc, au moins loginAndAuthenticate() serait un meilleur nom