1

我知道这里有很多关于此的问答,但我似乎无法理解它们,因为它们没有显示完整的代码示例,或者用于做与我想做的不同的事情。

我有一个简单的 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);

    }
}

我仍然想知道是否有办法为选项卡应用程序显示扩展权限对话框,因此很高兴看到 php sdk 的解决方案。

4

2 回答 2

0

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

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

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

您还必须在开发人员站点中为应用程序设置域和站点 url,并初始化 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>
于 2012-02-25T16:07:31.007 回答
-1

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

我可能是错的:)

于 2012-02-25T15:51:45.510 回答