Facebook标签获取访问用户ID

时间:2011-08-21 12:01:57

标签: facebook

我正在开发一个应用程序,它将标签添加到特定的粉丝页面(它不适合在粉丝页面之外使用),但我需要获取查看的用户的ID选项卡(选项卡包含用户需要回答几个问题的比赛,我们希望保存这些问题的答案,以便我们确定获胜者)。

我知道标准的facebook标签应用程序只能得到关于用户的模糊信息(语言和用户年龄的粗略指示),但我想知道如何获取正在查看的用户的用户ID标签。我想强调一下,这个页面没有安装在用户个人资料页面上,所以我无法获得这样的ID。 我当时认为可能有办法要求获得有关用户的信息的权限,但我之前从未在选项卡中看到过这种情况,仅在画布应用上。

我们无法在画布页面上进行此竞赛,我们确实需要它在标签页上。另一种选择是随机选择我们的粉丝作为赢家,但我宁愿真正解决这个问题。

对于要求用户从应用程序选项卡访问其个人数据的权限的任何帮助,我们将不胜感激。

提前致谢,

2 个答案:

答案 0 :(得分:6)

为了获得有关用户的任何特定信息,该用户必须授权您的应用程序。

根据您的要求,我建议您使用JavaScript SDK: http://developers.facebook.com/docs/reference/javascript/

以下代码将尝试在加载时记录用户 - 如果成功,响应将包含用户ID和访问令牌。如果用户尚未对应用程序进行审核,则会弹出授权对话框。在此示例中,在初始化之后直接尝试登录,但更好的做法是通过显式用户交互(例如,从链接)触发FB.login,否则浏览器可能会阻止弹出窗口。

<div id="fb-root"></div>
<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId: 'your app id', 
            cookie: true, 
            xfbml: true,
            oauth: true
        });

        FB.login(function(response) {
            if (response.authResponse) {
                // response will contain, among other things, the users id and accesstoken
                FB.api('/me', function(response) {
                    // response will contain the user data you have permissions for
                });
            } else {
                // User cancelled login or did not fully authorize.
            }
        }, {scope: 'LIST,YOUR,PERMISSIONS'});
    };
    (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol +
                '//connect.facebook.net/en_US/all.js';
                document.getElementById('fb-root').appendChild(e);
    }());
</script>

编辑纠正@ifaour指出的错误。

答案 1 :(得分:0)

//This will help you to get user data

<?php
    session_start();
    require 'src/facebook.php';
    $app_id = "your_app_id";
    $app_secret = "your_secret_key";
    $facebook = new Facebook(array(
        'appId' => $app_id,
        'secret' => $app_secret
    ));

    $canvas_page = "https://www.facebook.com/page_name/app_appid"; //this is your facebook app 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 $data["user_id"];
        $_SESSION['fbuser'] = $data["user_id"];
    }