为管理员创建Facebook应用程序选项卡

时间:2011-09-10 15:32:37

标签: php facebook

我需要将用户信息(即:用户ID,电子邮件地址)从我的门户网站传递到Facebook应用程序,以便当他们授予访问权限使用该应用程序时,他们的个人资料会显示在他们的Facebook标签上。

到目前为止,我决定在Facebook上创建一个管理登录页面/仪表板,以便他们输入他们的电子邮件和密码。然后,我可以检索他们的userID以添加到Facebook选项卡,它将加载他们的所有信息。

现在,我需要Facebook知道我传递了这个值,并将其加载到用户Facebook Like页面。

我不确定这是否是正确的使用方法,或者我应该从哪里开始。

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您想知道Facebook应用中管理页面的一般模式。

我通常做的是确定查看您网页的人是否是管理员,如果是,则输出一个安全链接到您的编辑页面,然后通过Facebook连接并再次验证用户,然后再显示您需要的任何表格执行管理任务。

确定用户是否是该页面的管理员:解析签名的请求数据时,您应该看到page.admin值。如果您没有获得任何已签名的请求数据,您可以放心地假设该用户不是管理员。您可以使用PHP SDK来解析签名的请求数据或编写自己的东西。我编写了自己的库,因为我发现PHP SDK有点难以使用。 https://bitbucket.org/tlack/xfb

一旦您知道他们是否是管理员,请输出指向您管理页面的链接。在该页面上,使用JS SDK进行典型的FB Connect。这是我在Domain Trip Facebook应用程序中使用的一个小例子,用于请求和存储我稍后用来操作页面的离线访问令牌:

  <div id="fb-root"></div>
  <script src="http://connect.facebook.net/en_US/all.js"></script>
  <script type="text/javascript">
  FB.init({
    appId  : '<?= $app_id; ?>',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    oauth  : true // enable OAuth 2.0
  });
  function login() {
    var callback = function(response) {
      if (response.authResponse) {
        console.log('Welcome!  Fetching your information.... ');
        FB.api('/<?= $_REQUEST['id']; ?>?fields=access_token',
          function(response) {
            if (response.access_token) {
              document.location = 'edit_permission.php?id=<?= $_REQUEST['id']; ?>&at='+response.access_token;
            } else {
              alert("Could not get permission to access page. Please contact help@domaintrip.com");
            }
          }
        );
      } else {
        document.location = '<?= get_my_url(); ?>&f=1';
      }
    };
    FB.login(callback, {scope: 'offline_access,manage_pages'});
  }
  </script>
  <p>
    We need permission to interact with your Facebook page.
  </p>
  <p>
    <button onclick="login(); return false;">Login Now</a>
  </p>

如果你想变得非常有趣,你可以在主页面中拥有管理编辑用户界面,点击按钮时展开。