1

我知道这可能是重复的问题,但请帮忙。我创建了一个应用程序并将其安装在我的 Facebook 页面上。当我使用身份验证方法对其进行身份验证时,我的问题是我得到了用户 ID……但是当我通过正确的签名请求方法时(即,当我仅使用 facebook 网站登录时。)我没有得到用户。当我使用 facebook 网站登录时,如果有签名请求,我如何获取用户 ID。

我的签名请求。

   $facebook = new Facebook(array(
            'appId' => '****',
            'secret' => '****',
            'cookie' => true,
        ));

        echo 'User ID :- ' . $user = $facebook->getUser();
        $signed_request = $facebook->getSignedRequest();

        echo '<pre>';
        print_r($signed_request);
        echo '</pre>';


User ID :- 0
Array (
[algorithm] => HMAC-SHA256
[issued_at] => 1372676199
[page] => Array
    (
        [id] => 544896778905441
        [liked] => 
        [admin] => 1
    )

[user] => Array
    (
        [country] => in
        [locale] => en_US
        [age] => Array
            (
                [min] => 21
            )
    )
)

如何获取用户 ID。

4

2 回答 2

0

** 编辑 ** 几个月前(2014 年 12 月)Facebook 不再允许点赞内容。我想这就是为什么有人四处投反对票并链接到他们自己的答案的原因。所以以下不再有效

为已授权应用程序的用户获取签名请求(这是您的第一种情况)与从页面应用程序上的签名请求获取用户 ID 之间存在差异。在第二个示例中,您可以测试用户是否喜欢您的页面,但您无法获取特定的用户 ID。他们只是在与您的页面进行交互——是的,他们可能已登录 Facebook,但他们并未明确授权您的应用。我想这就是您所说的“仅使用 Facebook 网站登录”的意思

如果您查看https://developers.facebook.com/docs/reference/login/signed-request/您会看到它声明

Some fields and values, the user_id and oauth_token for example will only be passed if the user has logged into your app.

他们可能已登录 Facebook,但尚未登录/授权您的应用

于 2013-07-01T11:49:48.357 回答
-1

您可以按照有关如何在此处解码签名请求的说明 https://developers.facebook.com/docs/facebook-login/using-login-with-games#parsingsr

或者

您可以使用我创建的服务。它将返回解码后的签名请求:)

https://websta.me/fbappservice/parseSignedRequest/<concat signed request here>

//angularjs

 you may get it via $http.jsonp(url);

//jquery // 参考 jquery 文档获取 jsonp 请求

$.getJSON( url, {
    format: "json"
  })
于 2014-08-08T03:10:23.797 回答