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 中因扩展权限而失败的主要内容,如果未能解决你的问题,请参考以下文章

隐式授权重定向URI的必要性是什么?

Authorization_code 授权重定向问题

部分视图和视图的授权重定向

在 React 和 NodeJS 中未经授权重定向之前刷新令牌

Oauth2 重定向到无效端口 8080

Oauth 重定向 URL 不是动态的