我知道这里有很多Q& A,但我似乎无法理解它们,因为它们没有显示完整的代码示例,或者用于做与我正在尝试做的事情不同的事情。
我有一个简单的facebook欢迎测试标签。不是画布应用程序。我希望能够获取用户ID,但必须让它在提示符号出现之前提示他们访问该信息。
所以我正在寻找的是一个简单的欢迎选项卡的代码示例。我不需要登录页面或类似的东西,因为这将在粉丝内容页面中,因此他们必须已经登录。我只是想弹出一个对话框,要求他们获得权限,这样我才能获得用户ID。
由于
编辑: 我想补充一点,我只是想出了我的问题,但这并不是这个问题的答案。我想出了如何在不要求用户访问其个人资料的情况下获取用户ID。它就像将此代码添加到页面一样简单,并且它以相同的方式在选项卡和画布应用程序中工作。 getUser()由其self返回0,但由于用户已登录以查看此内容,因此当getUser()返回0时,代码只是从API方法获取用户ID。现在我终于明白了这一点似乎很简单。
$session = $facebook->getUser();
if (!$session) {
$url = $facebook->getLoginUrl(array(
'canvas' => 1,
'fbconnect' => 0
));
echo "<script type='text/javascript'>top.location.href = '$url';</script>";
} else {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
$updated = date("l, F j, Y", strtotime($me['updated_time']));
echo "Hello " . $me['name'] . "<br />";
echo "You last updated your profile on " . $updated;
} catch (FacebookApiException $e) {
echo "Error:" . print_r($e, true);
}
}
我仍然想知道是否有办法让标签应用程序显示扩展权限对话框,以便查看php sdk的解决方案。
答案 0 :(得分:0)
您需要提示他们允许您的应用程序在用户上提取数据
这可以使用JS SDK的函数FB.login()
来完成。您可以在facebook文档中获得更多详细信息:http://developers.facebook.com/docs/reference/javascript/FB.login/
请注意,弹出窗口只能在mouseclick
或keyup
个事件上打开 - 否则弹出窗口阻止程序会阻止它。
您还必须在开发者网站中为应用程序设置域名和站点网址,并初始化facebook js库(加载段落在 - http://developers.facebook.com/docs/reference/javascript/)
<div onclick="login();">click here to login</div>
<script type="text/javascript">
function afterLogin(){
alert("user logged");
}
function login(){
FB.getLoginStatus(function(response){
if(response.status=="connected")
{
afterLogin();
} else {
FB.login(function(response){
if(response.status=="connected")
{
afterLogin();
}
});
}
});
}
</script>
答案 1 :(得分:-1)
我认为facebook不允许这样做... Facebook不希望用户的标签能够检测到谁正在查看它,并且可能向用户的朋友显示未显示给用户的信息。
我错了:)