0

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

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

因此,现在当您在 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=[从某处提供的访问令牌] 访问当前用户的 ID

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

目前这些是我的设置(询问更多信息,以便我可以给你)设置>身份验证对话框>经过身份验证的推荐>用户和朋友权限=电子邮件设置>身份验证对话框>经过身份验证的推荐>身份验证令牌参数=?code=

设置 > 高级 > 迁移 = 全部启用

4

1 回答 1

1

FB 使用签名请求将数据发送到您的应用程序(不是 $_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' => '***',
)

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

"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,
...

请给出意见!谢谢。-

于 2012-01-15T12:01:08.873 回答