【问题标题】:Why do I get an undefined index for signed_request in my facebook app?为什么我在我的 Facebook 应用程序中获得未定义的 signed_request 索引?
【发布时间】:2011-09-23 20:06:39
【问题描述】:

我正在尝试在 facebook 上学习一个测试应用程序。我正在使用来自 facebook 开发人员 page 的这段代码:

 <?php 

     $app_id = "YOUR_APP_ID";

     $canvas_page = "YOUR_CANVAS_PAGE_URL";

     $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 
            . $app_id . "&redirect_uri=" . urlencode($canvas_page);

     $signed_request = $_REQUEST["signed_request"];

     list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

     $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

     if (empty($data["user_id"])) {
            echo("<script> top.location.href='" . $auth_url . "'</script>");
     } else {
            echo ("Welcome User: " . $data["user_id"]);
     } 
 ?>

当我运行它时,我得到:

Message: Undefined index: signed_request

我在 Codeigniter 中使用它。我不知道这是否重要。当我运行它时,它使用 $auth_url 并返回:

http://mydomain.com/responsepage?code=biglongstring

所以我知道我要去 facebook 并得到一些东西......

在返回的字符串中,url 是一个名为“code”的变量。我试图更改 $_REQUEST 对象以查找“代码”,但它给出了相同的错误。

它会在短暂显示错误后将我重定向回我的响应页面,因为“user_id”元素为空。它是空的,因为发回的 url 中不存在 signed_request。

我做错了什么?它应该去 facebook,要求我允许应用程序,显示 user_id。由于某种原因,signed_request 不存在。

谢谢。

编辑:我又在看这个了。它实际上在哪里使用该 URL?

编辑:如果我手动使用 $auth_url,将其粘贴到浏览器的地址中,它会毫无问题地重定向回我的响应页面。当然,我没有看到一个名为signed_request的变量,只是“代码”所以我不知道发生了什么。

【问题讨论】:

  • 您是在 inside Facebook iframe 还是在独立网站外部使用此代码?
  • 我将它创建为一个应用程序。所以我认为这意味着我使用 iFrame。我没有选择我自己的网站。
  • 所以你被重定向到外部 Facebook?
  • 是的。我一定是做错了。
  • 但是,它被设置为facebook上的应用程序。

标签: facebook


【解决方案1】:

好的,您似乎在 $canvas_page 变量中使用了 Canvas URL,这是错误。您需要使用 Canvas Page,类似于:http://apps.facebook.com/appnamespace

这样,您的应用将在 inside iframe 中打开,Facebook 将能够向您发送signed_request

【讨论】:

  • 哦,废话,我很笨。我要去我的网页而不是apps.facebook.com/my_app。谢谢。
  • 为什么我会得到 API 错误描述:指定的 URL 不属于应用程序?我为 $canvas_page 变量输入了apps.facebook.com/mynamespace
【解决方案2】:

确保您在设置->高级->迁移中启用了“画布签名请求” 然后你应该通过 $_POST 获得 signed_request。

【讨论】:

    猜你喜欢
    • 2015-03-23
    • 2012-02-05
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 2014-04-06
    • 1970-01-01
    相关资源
    最近更新 更多