我正在尝试构建一个允许用户在4个不同类别中投票的应用, 我想保存用户ID,以便确保某人只能投票一次。
我知道当用户与标签互动时,您可以获取用户ID,我读过有关fb_sig_profile_user
的内容,但我不知道如何使用它。
我在facebook开发页面上已经阅读了一些相关内容,但不是很清楚。
如果我理解正确,您可以在用户点击某些内容后获取用户ID,并且facebook选项卡会执行ajax调用。 然后在那一刻你可以获取用户ID,但我不知道如何。
答案 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"];
}
?>