facebook api将#_ = _附加到我的返回uri

时间:2012-01-31 03:41:51

标签: php facebook api facebook-graph-api

我正在使用facebook php库来验证我的应用程序的用户,它工作正常但由于某种原因,facebook将字符#_=_附加到我的返回uri的末尾。我读过如果没有设置redirect_uri参数但是我确实设置了它们就这样做了,事实上我在登录facebook后成功地重定向到了那个URL。

以下是我获取登录网址的方法:

$fbLoginUrl = $fb->getLoginUrl(array(
    'scope' => 'email,publish_stream,user_birthday,user_photos,friends_photos',
    'redirect_uri' => 'http://myapp.net/auth'
));

一切都很好,我想这只是一个美化的东西。任何人都可以帮助我吗?

提前致谢!

2 个答案:

答案 0 :(得分:4)

在Facebook开发人员博客上,有人告诉我们,如果你明确设置redirect_uri参数,你就不会将#_=_附加到回调uri上。但这种情况并非如此。即使在设置redirect_url字段时,您仍会获得这些字符。但这不会对你的流量产生任何影响。

请检查:Session Redirect Behavior - setting redirect_uri explicitely

答案 1 :(得分:2)

你只能 摆脱这个客户端。

您可能认为可以通过重定向到没有锚点的URL来解决此服务器端:

  • facebook重定向到http://MyFacebookRedirectUrl...#_=_
  • 然后我们重定向到一些新的网址,没有锚点

....但#_=_在浏览器地址栏中以魔法重新出现 - 怎么样?

http://developers.facebook.com/bugs/318390728250352看到James Pearce的回答:

“某些浏览器会将来自URL的哈希片段附加到已重定向到的新URL的末尾(如果新URL本身没有哈希片段)。” < / p>

还有这个:

http://blogs.msdn.com/b/ieinternals/archive/2011/05/17/url-fragments-and-redirects-anchor-hash-missing.aspx

  

Firefox,Chrome和Opera [现在的IE10]将重新附加网址   尽管如此,在发生HTTP / 3xx重定向之后仍然存在碎片   该片段不存在于Location指定的URL中   重定向响应标题

因此,如果您只是从Facebook重定向页面进行服务器端重定向,那么您将不得不删除此客户端。

另一种选择是将服务器端重定向到包含不同命名锚点的URL - 但这并不能真正解决问题,并且并非所有浏览器都会做同样的事情。