Facebook OAuth2 - "Sorry, something went wrong"
Facebook OAuth2 - "Sorry, something went wrong"
我们的网络应用程序允许用户通过 Facebook 登录。从技术上讲,我们使用的是 Facebook OAuth2。我们在两年前就实现了这个登录过程。它在 2015 年 11 月 13 日之前运行良好,但从那天起就没有了。当我们的服务器发送请求时
https://graph.facebook.com/oauth/access_token
使用适当的参数(client_id
、redirect_uri
、client_secret
、code
),来自 Facebook 的响应具有 HTTP 状态 400。响应正文是一个 HTML 页面,上面写着"Sorry, something went wrong".
11 月 13 日,Facebook 上可能出现了一些问题。
我发现以下消息:
http://www.independent.co.uk/life-style/gadgets-and-tech/news/facebook-down-site-breaks-for-many-people-though-not-for-everyone-a6732906.html
但是,我们的服务器在一周后仍然收到此错误响应。我们在生产环境中部署了一个系统实例,在测试环境中部署了另一个实例(具有不同的 Facebook 帐户,即具有不同的 client_id
和 client_secret
)。目前,Facebook 登录在测试环境下运行良好。我不确定它是否在 11 月 13 日有效。
您有从此类问题中恢复的经验吗?为什么 Facebook 登录在测试环境中有效,而在同一应用程序的生产环境中无效?为什么生产实例在某一天坏了,一周后还是坏了?
感谢您的帮助。
最后,通过重启 servlet 容器解决了问题 (Tomcat 7)。但是,我不知道为什么。
所有这些都是专门使用登录按钮。不是 API 服务器端,也不是 FB.login()
。它有时对我有用,有时对我不起作用,我不明白为什么。我会打开一个新的 window,它可能会工作,也可能不会 - 但它似乎一旦坏了就坏了。
使用 Chrome 'Device simulator' 时似乎有问题。
查看 SDK Javascript(即 Facebook 登录按钮使用的 SDK),它会检查设备是否为 'touch' 设备,如果是,它将使用 m.facebook.com
请求 oauth 令牌时的域。
这个域失败 m.facebook.com:
但是,如果页面加载时未激活移动设备模式,则它会使用 www.facebook.com
并成功:
所以对我来说,当前的解决方法是:
- 假设您在控制台处于活动状态的情况下进行开发。
- 当您需要重新加载页面时,请按 Ctrl + Shift + M 以停用移动设备模式。
- 刷新页面
- 按钮初始化后,按 Ctrl + Shift + M 再次激活它.
- 如果你看到
m.facebook.com
那么你做的不够快,或者你可能正在使用类似 Angular 的热重载,你需要手动刷新。
我遇到了同样的问题。我认为问题源于在您的身份验证请求中传递了无效的范围。尝试删除身份验证请求中的范围以查看是否有效。
我们的网络应用程序允许用户通过 Facebook 登录。从技术上讲,我们使用的是 Facebook OAuth2。我们在两年前就实现了这个登录过程。它在 2015 年 11 月 13 日之前运行良好,但从那天起就没有了。当我们的服务器发送请求时
https://graph.facebook.com/oauth/access_token
使用适当的参数(client_id
、redirect_uri
、client_secret
、code
),来自 Facebook 的响应具有 HTTP 状态 400。响应正文是一个 HTML 页面,上面写着"Sorry, something went wrong".
11 月 13 日,Facebook 上可能出现了一些问题。 我发现以下消息: http://www.independent.co.uk/life-style/gadgets-and-tech/news/facebook-down-site-breaks-for-many-people-though-not-for-everyone-a6732906.html
但是,我们的服务器在一周后仍然收到此错误响应。我们在生产环境中部署了一个系统实例,在测试环境中部署了另一个实例(具有不同的 Facebook 帐户,即具有不同的 client_id
和 client_secret
)。目前,Facebook 登录在测试环境下运行良好。我不确定它是否在 11 月 13 日有效。
您有从此类问题中恢复的经验吗?为什么 Facebook 登录在测试环境中有效,而在同一应用程序的生产环境中无效?为什么生产实例在某一天坏了,一周后还是坏了?
感谢您的帮助。
最后,通过重启 servlet 容器解决了问题 (Tomcat 7)。但是,我不知道为什么。
所有这些都是专门使用登录按钮。不是 API 服务器端,也不是 FB.login()
。它有时对我有用,有时对我不起作用,我不明白为什么。我会打开一个新的 window,它可能会工作,也可能不会 - 但它似乎一旦坏了就坏了。
使用 Chrome 'Device simulator' 时似乎有问题。
查看 SDK Javascript(即 Facebook 登录按钮使用的 SDK),它会检查设备是否为 'touch' 设备,如果是,它将使用 m.facebook.com
请求 oauth 令牌时的域。
这个域失败 m.facebook.com:
但是,如果页面加载时未激活移动设备模式,则它会使用 www.facebook.com
并成功:
所以对我来说,当前的解决方法是:
- 假设您在控制台处于活动状态的情况下进行开发。
- 当您需要重新加载页面时,请按 Ctrl + Shift + M 以停用移动设备模式。
- 刷新页面
- 按钮初始化后,按 Ctrl + Shift + M 再次激活它.
- 如果你看到
m.facebook.com
那么你做的不够快,或者你可能正在使用类似 Angular 的热重载,你需要手动刷新。
我遇到了同样的问题。我认为问题源于在您的身份验证请求中传递了无效的范围。尝试删除身份验证请求中的范围以查看是否有效。