在Facebook页面选项卡中检索用户ID

时间:2012-01-10 20:14:03

标签: facebook

我正在尝试构建一个允许用户在4个不同类别中投票的应用, 我想保存用户ID,以便确保某人只能投票一次。

我知道当用户与标签互动时,您可以获取用户ID,我读过有关fb_sig_profile_user的内容,但我不知道如何使用它。

我在facebook开发页面上已经阅读了一些相关内容,但不是很清楚。

如果我理解正确,您可以在用户点击某些内容后获取用户ID,并且facebook选项卡会执行ajax调用。 然后在那一刻你可以获取用户ID,但我不知道如何。

3 个答案:

答案 0 :(得分:1)

我有许多Facebook页面标签需要Facebook用户ID,以确保不会为一个用户创建重复的条目。你要做的就是加强Facebook应用程序。将其配置为页面选项卡应用程序并将其放在您的Facebook页面上。一旦它存在,那么你做一个Facebook登录弹出窗口,询问用户权限。之后,您可以使用SDK查询当前用户以获取其ID(或者您可以解码facebook发布到您的标签应用程序的signed_request表单post参数)。您也可以在非页面选项卡应用程序中执行类似的操作,无论是独立网站还是iFramed画布应用程序。

答案 1 :(得分:0)

Facebook将使用signed_request参数向您的应用发出POST请求,在您解码as described in the docs后,该参数将产生一些信息,例如用户的国家/地区

如果用户已授权您的应用,则该相同参数将包含其他信息,例如用户的Facebook ID

答案 2 :(得分:0)

//使用此来获取Facebook用户ID

<?php session_start();?>    
    <?php 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 you 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"];
             } 
?>