Facebook 如何在简单的iframe选项卡中提示用户访问用户id?

Facebook 如何在简单的iframe选项卡中提示用户访问用户id?,facebook,get,userid,Facebook,Get,Userid,我知道这里有很多关于这方面的问答,但我似乎无法理解它们,因为它们没有显示完整的代码示例,或者用于执行与我尝试执行的不同的操作 我有一个简单的facebook欢迎测试标签。不是画布应用程序。我希望能够获得用户id,但必须使其在签名请求中显示之前提示他们访问该信息 所以我要找的是一个简单欢迎标签的代码示例。我不需要一个登录页面或类似的东西,因为这将在球迷的内容页,所以他们将不得不登录已经。我只想弹出一个对话框,询问他们的权限,这样我就可以得到用户ID 谢谢 编辑: 我想补充一点,我刚刚解决了我的问题

我知道这里有很多关于这方面的问答,但我似乎无法理解它们,因为它们没有显示完整的代码示例,或者用于执行与我尝试执行的不同的操作

我有一个简单的facebook欢迎测试标签。不是画布应用程序。我希望能够获得用户id,但必须使其在签名请求中显示之前提示他们访问该信息

所以我要找的是一个简单欢迎标签的代码示例。我不需要一个登录页面或类似的东西,因为这将在球迷的内容页,所以他们将不得不登录已经。我只想弹出一个对话框,询问他们的权限,这样我就可以得到用户ID

谢谢

编辑: 我想补充一点,我刚刚解决了我的问题,但这并不是这个问题的答案。我知道了如何在不请求用户访问其个人资料的权限的情况下获取用户id。这就像将此代码添加到页面一样简单,它在选项卡和画布应用程序中的工作方式与此相同。getUser()自身返回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);

    }
}
$session=$facebook->getUser();
如果(!$session){
$url=$facebook->getLoginUrl(数组)(
“画布”=>1,
“fbconnect”=>0
));
echo“top.location.href='$url';”;
}否则{
试一试{
$uid=$facebook->getUser();
$me=$facebook->api('/me');
$updated=日期(“l,F j,Y”,strottime($me['updated_time']);
回声“你好”。$me['name']。“
”; echo“您上次更新您的个人资料是在”.$updated; }捕获(FacebookApiException$e){ echo“Error:”.print\u r($e,true); } }

我仍然想知道是否有一种方法可以让tab应用程序显示扩展权限对话框,这样就可以看到php sdk的解决方案了。

我认为facebook不允许这样做。。。Facebook不希望用户的标签能够检测到谁在看它,并可能向用户的朋友显示未向用户显示的信息


我可能错了:)

您需要提示他们允许您的应用程序提取用户的数据

这可以使用JSSDK的函数
FB.login()
完成。您可以在facebook文档中获得更多详细信息:

请注意,只能在
mouseclick
keyup
事件上打开弹出窗口-否则弹出窗口拦截器将阻止它

您还必须在开发者站点中设置应用程序的域和站点url,并初始化facebook js库(中的加载段落)

单击此处登录
函数afterLogin(){
警报(“用户登录”);
}
函数登录(){
FB.getLoginStatus(函数(响应){
如果(响应状态==“已连接”)
{
afterLogin();
}否则{
FB.登录(功能(响应){
如果(响应状态==“已连接”)
{
afterLogin();
}
});
}
});
}

这个人似乎想做我想做的事,但我遇到了和他一样的问题。当我点击登录链接时,我看到了facebook的标志,但我看不出这个人是如何解决他们的问题的。我使用的是php sdk,而不是javascript,因此链接中关于javascript的部分在这里不适用。我在facebook上添加了欢迎测试作为画布应用程序,其行为方式完全相同,但iframe更大,因此如果我能找出如何提示用户通过画布访问userid,然后我可以尝试将相同的代码应用到选项卡上。感谢Yaron Uliel,如果可能的话,我想用php sdk来实现这一点。我将编辑这个问题,因为事实证明,我实际上不需要用户允许访问某个应用程序来获取用户id。互联网上有很多关于这些主题的令人困惑的半书面信息,所以我觉得我必须获得用户许可才能获取他们的用户id。但我只是设法解决了这个问题。
<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>