如何使Facebook应用程序安装/可安装/自动添加书签

时间:2010-11-11 00:14:45

标签: facebook install bookmarks

我有这个Facebook应用程序资料页面:

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

与我的基于iframe的Facebook应用程序Gem Spinner相关联:

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

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

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

所以我显然错过了一些东西。我试着按照这里的说明进行操作:http://developers.facebook.com/docs/guides/canvas/,包括书签上的部分,但是这一部分听起来就像它会自动发生一样。

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

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

1 个答案:

答案 0 :(得分:0)

显然我缺少的是,你需要从你的javascript代码中调用FB.login(),以便让facebook“自动”为用户添加应用程序的书签。我认为这有一定的意义,因为用户必须在您的应用(或代表您的应用的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>

这一切看起来都非常糟糕,但我不知道更好的方法是在避免弹出警告的同时自动进行身份验证。

在我看来,FB.login()函数容易混淆命名。它似乎意味着,“如果用户未登录,则显示登录UI。但如果用户已登录,或者用户使用UI成功登录,则还要为此应用程序验证用户,包括自动为用户添加此应用程序的书签。“所以也许至少loginAndAuthenticate()会是一个更好的名字。