查找喜欢页面的Facebook用户标识符

时间:2014-04-12 18:10:24

标签: javascript facebook facebook-graph-api facebook-like

enter image description here

enter image description here

我的网页上有facebook喜欢的按钮。当有人点击喜欢它时,有没有办法知道谁喜欢它,任何Facebook用户标识符?

此外,如果有人已经喜欢并回到我的页面,那么无论如何都知道访问者已经喜欢它以及该访问者的Facebook唯一标识符是什么?

PL。假设,用户已登录Facebook。 我在https://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe读到了FB.Event.subscribe,但这只是告诉我有人喜欢我的页面,但是没有办法知道" WHO"

我可以灵活地将按钮更改为链接或其他任何内容,只要我能获得唯一标识符。

1 个答案:

答案 0 :(得分:0)

我几年前建立的东西,所以不确定它是否还在工作,考虑到Facebook经常更改它的API。也许你可以稍微调整一下,或者它可以为你提供一些关于如何检索userId的新想法:

var pageID = "@Configuration.FbPageID",
    appID = "@FacebookApplication.Current.AppId",
    returnURL = "@Configuration.FbReturnURL";
    OAuthResponse = {},
    fbReturnHandler = function () {
        if (!$.isEmptyObject(response)) {
            OAuthResponse = response.authResponse;
            isFan();
        }
    },
    isFan = function () {
        if (!$.isEmptyObject(OAuthResponse.accessToken)) {
            FB.api("me/likes/" + pageID + "?access_token=" + OAuthResponse.accessToken, function (r) {
                if (r.data.length) {
                    window.location = "/@ViewBag.Language/Home/step2?uid=" + OAuthResponse.userID;
                }
            });
        }
    };

window.fbAsyncInit = function () {
    FB.init({ appId: appID, status: true, cookie: true, xfbml: true, oauth: true });

    FB.Event.subscribe('edge.create', function (response) {
        if (!$.isEmptyObject(response)) {
            OAuthResponse = response.authResponse;
            window.location = "/@ViewBag.Language/Home/step2?uid=" + OAuthResponse.userID;
        }
    });

    if ($.isEmptyObject(OAuthResponse)) {
        FB.ui({
            client_id: appID,
            method: 'oauth',
            scope: 'user_likes',
            redirect_uri: returnURL,
            response_type: 'token'
        });
    } else {
        isFan();
    }
};

returnURL是一个虚拟页面,用于处理OAuth请求并将响应值返回给您的应用程序。由于它不会自动关闭,您可以通过添加一个小脚本来解决它:

<script type="text/javascript">
    if (window.opener) {
        window.opener.fbReturnHandler();
        window.close();
    }
</script>

“喜欢”按钮位于XFBML中:

<span class="fb-like"><fb:like href="http://www.facebook.com/yourfanpage" send="false" width="49" show_faces="false" font="arial"></fb:like></span>

显然现在这可能是HTML5:生成here

如评论中所述,要获得userId,您必须通过一些Facebook政策(范围),以允许用户与您的应用程序共享此信息。因此,在Facebook上需要build your own application

在您的应用程序设置完成后,我发现Graph API Explorer对于获取正确的pageIdappId非常有帮助。浏览FB应用程序,粉丝时,不要对URL中的ID感到困惑......

OAuthResponse对象提取访问令牌,应用程序允许共享信息。成功后,您将在response.authResponse.userID中找到userId。

可以找到类似的信息here