检测用户何时通过新的Facebook身份验证引荐

时间:2012-02-01 22:20:44

标签: facebook

在新的FB身份验证系统中使用新的Authenticated Referrals,用户即使在点击我的应用程序之前也会登录。

我的问题是,有没有办法检测用户刚刚来自其中一个经过验证的referrel对话框?例如,通过在它们上指定redirect_uri并附加一些GET参数。

2 个答案:

答案 0 :(得分:0)

如果您转到https://developers.facebook.com/apps/YOUR_APP_ID/summary,则可以设置应用的域名和网站。

Facebook,出于安全原因,只会重定向到您在此处设置的网站,并在HTTP GET网址中传递一些参数(例如,为该用户生成的访问令牌),以决定您希望接收哪些参数必须去设置 - > auth对话框然后在页面底部Authenticated Referrals - >验证令牌参数。

编辑: 如果您想确保用户刚刚使用了auth对话框,您可以使用一个简单的解决方法:从URL中读取访问令牌,然后检查这是否是您第一次看到此令牌,如果是,您可以测试其有效性通过执行特定用户接受您(或更好的Facebook应用程序)的简单操作可以对他的个人资料执行令牌。最简单的方法可能是发送请求:

https://graph.facebook.com/me?access_token=...

如果令牌有效,那么它是可靠的。

答案 1 :(得分:0)

我自己一直在研究这个问题。如果Facebook刚刚传递了auth_ref = true或其他东西,那会好得多。无论如何,我想出了一个似乎适合我使用cookie的系统。

我已经有一个页面用作fb auth dilaog的重定向网址。此页面初始化用户并设置cookie。如果该cookie不存在且签名请求具有令牌,则我将重定向到此页面。我无法判断用户是来自经过身份验证的推荐还是来自书签之类的其他路径,但这对我的目的无关紧要。

您可以在以下位置查看详细信息: http://developsocialapps.com/authenticated-referrals-facebook-apps/

基本上是这样的:

// on somepage.php
if (signed request has token && url is not redirect page && user doesn't have cookie) {
    redirect to redirect.php;
}

// on redirect.php
set cookie;
redirect back to somepage.php