【问题标题】:Facebook signed_request returns NULLFacebook 签名请求返回 NULL
【发布时间】:2014-07-10 21:13:18
【问题描述】:

我在 facebook 上创建了新的 iframe 应用程序,并且想检测用户是否是当前页面的粉丝,所以我使用 $_REQUEST['signed_request'] 变量,如下所述:http://developers.facebook.com/docs/authentication/signed_request/。但是 $_REQUEST['signed_request'] 变量总是返回 NULL,而不是它应该实际返回的值。有没有人遇到过同样的问题?我对在 facebook 上创建应用程序非常熟悉,但无法弄清楚这个问题的原因......有什么想法吗?

【问题讨论】:

  • 你在做任何重定向吗?设置或取消设置 GETPOST 变量?
  • 什么都没有!只需在代码的最顶部打印变量的值以进行调试,它就会返回 NULL!
  • 确保您在应用程序高级设置中启用了signed_request for Canvas 设置,另请参阅此thread
  • 在您的应用设置中检查页面 url,检查 url 中指定的页面上的 signed_request 变量

标签: facebook


【解决方案1】:

确保在您的页面标签网址中指定页面名称,例如 http://yourdomain.com/myapp/index.php 而不仅仅是 http://yourdomain.com/myapp

签名的请求似乎只有在您指定确切的页面时才会被发布

【讨论】:

    【解决方案2】:

    您可以使用 Facebook 查询语言 (FQL) 来检查当前用户是否是您页面的粉丝。

    function userIsFan()
    {
        global $page_id, $facebook, $access_token;
        $fql = "SELECT uid from page_fan WHERE uid=me() AND page_id='".$page_id."'";
        $param = array('method' => 'fql.query',
        'access_token' => $access_token,
        'query' => $fql,
        'callback' => '');
        $response = $facebook->api($param);
        if (isset($response[0]))
        {
            return true;
        }
        return false;
    }
    

    注意事项...

    me() 是一种自动获取当前用户的用户 ID 的方法。
    $page_id 应该包含您在 fbmain.php 中指定的 Facebook 主页 ID

    【讨论】:

    • 线程从哪里开始要求专门检查喜欢的?
    • 要检查用户是否是页面的粉丝,您必须跟踪此人是否喜欢该页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 2017-03-12
    • 2016-03-31
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    相关资源
    最近更新 更多