Facebook Oauth 授权重定向在 Internet Explorer 中因扩展权限而失败
Posted
技术标签:
【中文标题】Facebook Oauth 授权重定向在 Internet Explorer 中因扩展权限而失败【英文标题】:Facebook Oauth authorize redirect fails in Internet Explorer for extended permissions 【发布时间】:2010-08-18 19:28:07 【问题描述】:我正在使用带有网络身份验证和扩展权限的 facebook oauth
我得到的授权 URL 最终是这样的
https://graph.facebook.com/oauth/authorize?client_id=myAppId&redirect_uri=my_redirect_uri&scope=offline_access,read_stream,friends_activities,user_activities,user_photos,friends_photos,user_location,user_about_me,user_activities
这在 Mozilla 和 Chrome 中运行良好,但 IE 无法显示网页。
但是,如果我将扩展权限的数量减少到仅 offline_access、read_stream、friends_activities、user_activities 它在 IE 中也可以正常工作。
如果我在范围参数中拥有超过 6 个权限,我看到 facebook 出于某种原因将上述请求重定向到 login.php 页面它不会在 IE 中重定向
有人看到这个问题吗?
【问题讨论】:
【参考方案1】:我想我正在经历同样的事情!
有人知道怎么解决吗?
我的代码似乎可以在 Firefox、Chrome 和 Safari 中运行,但不能在 IE 中运行(在 IE9 beta 中测试,不确定其他 IE 版本)。
也许这个权限列表太长了:
perms:'email,user_birthday,user_education_history,user_work_history,friends_education_history,publish_stream'
我们能做什么?
更新:我可能找到了解决方法。 IE 似乎不允许 Facebook 从主页登录。无论出于何种原因,IE8 在从 root 以外的页面登录时都能正常工作。我还没有测试过其他版本的 IE。我添加了一些 javascript/jquery 来检查使用 IE 的访问者并将这些人反弹到与根页面相同的单独登录页面。它似乎有效。测试时,请务必清除浏览器历史记录/cookies,然后关闭并重新启动浏览器。
var ieLogonPage='/logon/' ;
if(($.browser.msie)&&(window.location.pathname=='/')) window.location=ieLogonPage;//IE doesn't seem to let Facebook logon from the main page.
我不知道为什么这似乎有效。
【讨论】:
在重定向期间检查 url 的长度。 IE 的 URL 限制为 2K 个字符。 Facebook 正在重定向请求并添加到 url,因此根据 perminssions 的数量,url 的长度会有所不同。以上是关于Facebook Oauth 授权重定向在 Internet Explorer 中因扩展权限而失败的主要内容,如果未能解决你的问题,请参考以下文章