我正在开发一个应用程序,它将标签添加到特定的粉丝页面(它不适合在粉丝页面之外使用),但我需要获取查看的用户的ID选项卡(选项卡包含用户需要回答几个问题的比赛,我们希望保存这些问题的答案,以便我们确定获胜者)。
我知道标准的facebook标签应用程序只能得到关于用户的模糊信息(语言和用户年龄的粗略指示),但我想知道如何获取正在查看的用户的用户ID标签。我想强调一下,这个页面没有安装在用户个人资料页面上,所以我无法获得这样的ID。 我当时认为可能有办法要求获得有关用户的信息的权限,但我之前从未在选项卡中看到过这种情况,仅在画布应用上。
我们无法在画布页面上进行此竞赛,我们确实需要它在标签页上。另一种选择是随机选择我们的粉丝作为赢家,但我宁愿真正解决这个问题。
对于要求用户从应用程序选项卡访问其个人数据的权限的任何帮助,我们将不胜感激。
提前致谢,
添
答案 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"];
}