2010-11-11 150 views
0

我有这个Facebook应用程序的个人资料页:如何让Facebook应用程序安装/安装/自动书签

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

这是我基于iframe的Facebook应用程序相关联,宝石微调:

http://apps.facebook.com/gemspinner/

我从阅读最近的Facebook文档的理解是,在过去几个月中,Facebook改变了用户可以“书签”一个应用程序的方法(“书签”,据我了解,是将应用程序的图标添加到Facebook主页左侧的用户应用程序列表的过程。我的理解是,书签现在应该在用户第一次使用该应用程序时自动发生。

但是,这不是我的应用程序发生。当你去那里时,它只是显示你的应用程序页面,并让你玩游戏。没有确认信息,就像我在其他应用程序中看到的那样,检查是否允许此应用程序访问我的Facebook帐户中的各种信息。我的主页上没有添加书签/图标到应用程序列表。

所以我很明显缺少一些东西。我试图按照这里的说明进行操作:http://developers.facebook.com/docs/guides/canvas/,包括书签上的部分,但是该部分听起来就像是自动发生的。

我的应用程序已被批准用于Facebook目录(尽管它尚未显示在搜索目录中)。它不在“沙箱”模式。

也许有一些Facebook API调用,我必须让用户“安装”应用程序。如果是这样,我很想知道这些是什么。

回答

0

显然,我错过的是,为了让Facebook为用户“自动”书签应用程序,需要在JavaScript代码中调用FB.login()。我想这样做有一定的意义,因为在您的应用程序(或代表您的应用程序的Facebook)可以对用户帐户进行任何更改(如添加书签)之前,用户必须先通过应用程序进行“验证”。尽管如此,它似乎可能有的情况下,它添加书签没有身份验证,并肯定阅读Facebook的文档,人们会认为,简单地访问应用程序将创建书签,无论身份验证。

无论如何,另一个问题是如何使验证顺利进行。这可能是因为使用页面重定向有更巧妙和更实用的方式,但它似乎像这个新API想要显示登录UI的弹出窗口。如果该弹出是由按钮按下(即,说/意味着“点击此处用此应用程序进行验证”的按钮)触发的,那么您将看到没有可怕浏览器弹出警告的弹出窗口。但是,如果你只是自己调用FB.login()函数,就会得到可怕的警告。

所以,为了解决这个问题,我让我的代码触发按钮事件,并且它工作(至少在Firefox上)。该代码是:

<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> 

这一切似乎相当hackish的,但我不知道一个更好的方法,使同时避免弹出警告验证自动发生。

在我看来FB.login()函数被命名为混淆。这似乎意味着,“如果用户没有登录,请提供登录UI。但是,如果用户已经登录,或者用户使用用户界面成功登录,还需要为该应用程序验证用户身份,包括为该用户自动为该应用程序添加书签。“因此,至少loginAndAuthenticate()可能是一个更好的名称。

相关问题