Facebook身份验证和奇怪的重定向行为

时间:2011-10-21 01:08:47

标签: asp.net-mvc-3 redirect facebook-c#-sdk

我目前正在使用http://facebooksdk.codeplex.com测试facebook连接的OAuth实现。

我有一个带有2个简单操作的FacebookController,名为 LogOn CallBack

一切正常,用户已正确记录到我的系统中。

问题是当调用CallBack动作时,会发生一些奇怪的事情,这会产生一个简单的

return Redirect(loggedUrl);

重定向到正确记录的网址,但以下列字符结尾:#_=_

Facebook服务器似乎使用以下HTTP标头将信息发送到我的网络服务器:

HTTP/1.1 302 Found
Cache-Control: private, no-cache, no-store, must-revalidate
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Location: http://mywebsite.com/Facebook/CallBack/?state=1&code=AQCXexr10uxANSBOu9JqrBDxqPkWbsyxM1S9ltuY9XwCXW7eGsOII329SthClxOSM_a7wJvwrXh1_O3D5I7E_nxCDTWDLpyYdMpMUfw4zMWcQ4oV2PmRkIMd2NfPYRKlkLgkurEzka1CjAF1jp8Xb3crklOB59W4IT7LZy6MEmFusuhSKacmsTcV1LAOW4uJ3K4#_=_
P3P: CP="Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p"
Pragma: no-cache
Set-Cookie: locale=en_US; expires=Fri, 28-Oct-2011 00:09:38 GMT; path=/; domain=.facebook.com
Content-Type: text/html; charset=utf-8
X-FB-Server: 10.43.103.61
X-Cnection: close
Date: Fri, 21 Oct 2011 00:09:38 GMT
Content-Length: 0

如您所见,我们可以在位置值的末尾找到#_=_个字符。

重定向通过将#_=_字符自动添加到loggedUrl中来考虑{。}}字符。

即使我尝试使用return Redirect("/");#_=_也会从(几乎)无处添加到我重定向的网址中...

任何想法都会非常感激。

提前感谢您的回答。

此致

LB

1 个答案:

答案 0 :(得分:2)

Facebook最近通过在响应结束时添加# = 字符来修改其身份验证机制。字符串末尾的#符号实际上是在创建问题。因此,您可以截断查询并执行重定向,这将正常工作。