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

Posted

技术标签:

【中文标题】如何在简单的 iframe 选项卡中提示用户访问用户 ID?【英文标题】:How to prompt user for access to user id in a simple iframe tab? 【发布时间】:2012-02-25 15:38:48 【问题描述】:

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

我有一个简单的 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 的解决方案。

【问题讨论】:

【参考方案1】:

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

这可以使用 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>

【讨论】:

谢谢 Yaron Uliel,如果可能的话,我想用 php sdk 来做这件事。我要编辑这个问题,因为事实证明,我实际上不需要用户允许访问应用程序来获取用户 ID。互联网上有很多关于这些主题的令人困惑的半书面信息,所以我的印象是我必须获得用户许可才能获取他们的用户 ID。但我只是设法弄清楚了。【参考方案2】:

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

我可能是错的:)

【讨论】:

此人似乎正在尝试做我正在尝试的事情,但我遇到了与他相同的问题。 ***.com/questions/7278378/…我在点击登录链接时获得了 facebook 徽标,但看不到此人如何解决他们的问题。我使用的是 php sdk,而不是 javascript,因此该链接上关于 javascript 的部分不适用于此处。 我在 facebook 上添加了欢迎测试作为画布应用程序,它的行为方式完全相同,但 iframe 更大,所以如果我能弄清楚如何提示用户通过画布访问用户 ID ,然后我可以尝试将相同的代码应用于选项卡。

以上是关于如何在简单的 iframe 选项卡中提示用户访问用户 ID?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据登录成功在新窗口/选项卡或同一窗口/选项卡中打开页面?

在该选项卡中单击分页链接时如何激活选项卡?

如何在浏览器多个选项卡中处理用户注销?

如何防止用户在多个浏览器选项卡中打开应用程序?

Bootstrap 选项卡中的多个 Google 地图

像时间线页面选项卡中的详细页面