Facebook应用程序实例设置


Facebook App Instance Settings

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

我找不到任何文件来做这件事——有人知道怎么做吗?或者,有人可以效仿或学习吗?


解决方案

我在应用程序用户页面的选项卡上做了一个部分,只显示给页面的管理员。它链接到我的应用程序中的一个页面,将page_id发送到我的页面。这使我现在可以在基于page_id的数据库中存储信息(和设置)。

我发现Facebook有一个部分可以进入应用程序的设置页面(你可以通过开发者应用程序在应用程序设置中设置该页面),该页面也会发送page_id,但它并不是以加密的方式发送的,所以我用设置选项加密了page_id。

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

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

基本上,包含了一个额外的参数,称为"page",它将包含页面ID。使用该参数可以与页面交互并存储任何会话信息。

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

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

当用户通过访问另一个页面中的选项卡转到您的应用程序时,您的应用会收到一个名为signed_request的POST var。

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

希望它能有所帮助!