Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找喜欢某个页面的facebook用户标识符_Javascript_Facebook_Facebook Graph Api_Facebook Like - Fatal编程技术网

Javascript 查找喜欢某个页面的facebook用户标识符

Javascript 查找喜欢某个页面的facebook用户标识符,javascript,facebook,facebook-graph-api,facebook-like,Javascript,Facebook,Facebook Graph Api,Facebook Like,我的网页上有类似facebook的按钮。当有人点击喜欢它,那么有没有办法知道谁喜欢它,任何facebook用户标识符 此外,如果有人已经喜欢它并返回到我的页面,那么是否有人知道该访问者已经喜欢它,以及该访问者的facebook唯一标识符是什么 假设用户已经登录到facebook。 我在上读到关于FB.Event.subscribe的文章,但这只是告诉我有人喜欢我的页面,但没有办法知道“谁” 只要我能得到唯一的标识符,我就可以灵活地将按钮更改为链接或其他任何东西。这是我几年前构建的东西,考虑到Fa

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

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

假设用户已经登录到facebook。 我在上读到关于FB.Event.subscribe的文章,但这只是告诉我有人喜欢我的页面,但没有办法知道“谁”


只要我能得到唯一的标识符,我就可以灵活地将按钮更改为链接或其他任何东西。

这是我几年前构建的东西,考虑到Facebook频繁更改其API,所以不确定它是否仍在工作。也许您可以对此稍作调整,或者它为您提供了一些关于如何检索用户ID的新想法:

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>

if(窗口开启器){
window.opener.fbReturnHandler();
window.close();
}
like按钮位于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这些天:生成

如评论中所述,要获得用户ID,您必须通过一些facebook策略(范围),以允许用户与您的应用程序共享此信息。因此,需要在facebook上注册

安装应用程序后,我发现在获取正确的
pageId
appId
方面,使用该工具非常有帮助。浏览FB应用程序、粉丝页面时,不要被URL中的ID弄糊涂

对象获取应用程序允许共享信息所需的访问令牌。一旦成功,您将在
response.authResponse.userId
中找到用户标识


类似的信息也可以找到。

如果你只在页面中使用类似facebook的按钮,你无法获取用户数据。所以,你不能知道谁喜欢你的链接。不,你不能。虽然这似乎更无关紧要,但用户在互联网上仍然有一些隐私。如果你想获得用户ID,你必须创建一个应用程序,并向每个进入你网站的用户请求权限,然后由用户授予你该信息。谢谢@tim提供的片段。但我没有任何应用程序。相反,它只是在一个随机网页上。这很好,但你的简单网页仍然可以在facebook上有一个应用程序来检测用户是否喜欢某个网页。facebook上的应用程序只不过是facebook和您的简单网页之间的合同。添加应用程序需要用户授予对我的应用程序的权限。这是一个额外的责任层,我不想把它呈现给我的用户