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

时间:2012-02-25 15:38:48

标签: facebook get userid

我知道这里有很多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的解决方案。

2 个答案:

答案 0 :(得分:0)

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

这可以使用JS SDK的函数FB.login()来完成。您可以在facebook文档中获得更多详细信息:http://developers.facebook.com/docs/reference/javascript/FB.login/

请注意,弹出窗口只能在mouseclickkeyup个事件上打开 - 否则弹出窗口阻止程序会阻止它。

您还必须在开发者网站中为应用程序设置域名和站点网址,并初始化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不希望用户的标签能够检测到谁正在查看它,并且可能向用户的朋友显示未显示给用户的信息。

我错了:)