通过推介进行Facebook画布认证

时间:2012-01-15 10:30:20

标签: php facebook facebook-canvas

我一直坚持这个问题已经有一段时间了,我今天就放弃了,我意识到我真的非常需要帮助,我找不到任何解决类似问题的帖子..所以

我正在尝试创建一个Facebook应用程序(自2012年1月1日起 - 如果有任何标准更改,你们可以告诉我它),并且我已经正确设置了我的画布网址。

所以现在当你在facebook上访问我的应用程序时,就像apps.facebook.com/canvas-page一样,你可以看到我的应用程序。但是我遇到身份验证问题。

我的应用需要基本信息以及尝试访问它的用户的电子邮件地址。

因此,到目前为止,我已经设置了它,以便新用户可以看到身份验证对话框,然后访问我的应用程序。在访问我的应用程序时,我希望我的应用程序能够访问上述信息。然而,在我的画布页面上,我为php中的代码执行了以下操作,没有别的,我希望能够通过身份验证对话框中的facebook引用查看哪些信息传递到我的应用程序:

    <?php 
    print_r($_GET);
    echo "\n";
    print_r($_POST);
    ?>

但遗憾的是,这给了我空数组,没有别的。

我真正需要的是我的Facebook应用程序是access_token和用户ID,虽然我很确定我可以通过访问graph.facebook.com/me?access_token=[access token从某处提供来访问当前用户的id ]

这就是我的第一个问题,第二个问题是,当我退出facebook并访问apps.facebook.com/canvas-page时,我不会被要求登录,为什么会这样?我是否必须使用JavaScript重定向到Facebook才能登录,然后参考我的应用程序?

目前这些是我的设置(询问更多信息,以便我可以给你) 设置&gt;验证对话&gt;认证推荐&gt;用户&amp;朋友许可=电子邮件 设置&gt;验证对话&gt;认证推荐&gt;验证令牌参数=?code =

设置&gt;高级&gt;迁移=全部启用

1 个答案:

答案 0 :(得分:0)

FB使用Signed Request向您的应用发送数据(不是$ _POST,而不是$ _GET)。在Sample Canvas App中有一个名为signed_request Parameter的章节谈论它。

使用php-sdk,您可以像这样获得:

$signed_request = $facebook->getSignedRequest();

var_dump($signed_request);

array (
  'algorithm' => 'HMAC-SHA256',
  'expires' => 1326632400,
  'issued_at' => 1326628636,
  'oauth_token' => '***',
  'page' => 
  array (
    'id' => '***',
    'liked' => false,
    'admin' => true,
  ),
  'user' => 
  array (
    'country' => 'cl',
    'locale' => 'en_US',
    'age' => 
    array (
      'min' => 21,
    ),
  ),
  'user_id' => '***',
)

此外,您可以通过URL传递名为app_data的参数:

"http://www.facebook.com/YourPage?v=app_1234567890&app_data=any_string_here"

您也会在$signed_request中获得它。

...
array (
  'algorithm' => 'HMAC-SHA256',
  'app_data' => 'any_string_here',
  'expires' => 1326636000,
  'issued_at' => 1326629411,
...

请评论!感谢.-