Facebook应用实例设置

时间:2011-06-30 03:53:04

标签: php facebook facebook-php-sdk

我有一个应用程序,需要为用户的每个实例添加唯一设置,将其添加到页面中(将其添加为选项卡)。

我无法找到任何文档来执行此操作 - 有谁知道如何?或者,是否有人有一个示例可以关注或有学习的地方?


我在应用用户页面的选项卡上创建了一个部分,仅显示给管理员的页面。它链接到我的应用中将page_id发送到我的页面的页面。这使我现在可以根据page_id

在我的数据库中存储信息(和设置)

我发现Facebook有一个部分可以转到应用程序的设置页面(您可以通过开发人员应用程序在应用程序设置中设置),该页面也会发送page_id - 但它不会以加密的方式发送它,所以我用我的设置选项加密了page_id。

如果有人需要进一步解释,请随时给我发消息,我很乐意提供帮助。

3 个答案:

答案 0 :(得分:2)

我很确定你要找的是“页面”实例。每个页面都有一个Facebook ID,就像每个用户一样。在大多数情况下,您可以在用户ID的任何位置使用页面ID。您要做的是捕获页面的ID,而不是将其添加到页面(管理员)的用户的ID。如果这个URL看到如何获取页面ID,几乎一直滚动到底部: http://developers.facebook.com/docs/guides/canvas/

基本上,附加参数包括调用“页面”,其中包含页面ID。使用它与页面交互并存储任何会话信息。

答案 1 :(得分:1)

您可以使用数据库来存储用户的每个实例的设置,并使用唯一的密钥(使用php的uniqid函数)。

应用程序可以根据用户的密钥检索设置。

答案 2 :(得分:1)

当用户通过访问其他页面中的标签访问您的应用时,您的应用会收到名为signed_request的POST变种。

在PHP中,这个var可以通过以下方式解码:

function parse_signed_request($signed_request, $secret) {
  list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

  // decode the data
  $sig = base64_url_decode($encoded_sig);
  $data = json_decode(base64_url_decode($payload), true);

  if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
    error_log('Unknown algorithm. Expected HMAC-SHA256');
    return null;
  }

  // check sig
  $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
  if ($sig !== $expected_sig) {
    error_log('Bad Signed JSON signature!');
    return null;
  }

  return $data;
}

function base64_url_decode($input) {
  return base64_decode(strtr($input, '-_', '+/'));
}

$arr = parse_signed_request($_POST["signed_request"], "YOUR_APP_SECRET");

echo print_r($arr);

您可以使用$ arr [“page”] [“id”]来了解访问您应用的页面。

您可以在此处详细了解:

http://developers.facebook.com/blog/post/462/

http://developers.facebook.com/docs/authentication/signed_request/

希望它有所帮助!