【问题标题】:OAuth is breaking, but only when users are coming from HTTP, HTTPS works fineOAuth 正在中断,但只有当用户来自 HTTP 时,HTTPS 才能正常工作
【发布时间】:2011-10-30 10:30:53
【问题描述】:

我正在尝试为使用 OAuth 的用户获取身份验证令牌。

一切正常,当用户尝试使用 HTTPS(即来自 https://apps.facebook.com/APPNAME )访问应用程序时,我得到了很好的令牌。但是,如果用户来自 HTTP(大多数用户都是),我在尝试获取时从 facebook 收到 400 错误:

https://graph.facebook.com/oauth/access_token?code=XXXXXXXX-XXXXXX-XXXXXXXXX&client_secret=YYYYYYYYYYYYYYYYYYYYY&redirect_uri=https://fb.myapp.com/fb_connect/&client_id=ZZZZZZZZ

{
   "error": {
      "message": "Error validating verification code.",
      "type": "OAuthException"
   }
}

为什么会这样?

【问题讨论】:

  • 你在初始化你的 javascript sdk 时是否使用了 `oauth : true`?
  • 我没有使用javascript SDK..这是两台服务器通信
  • 您的redirect_uri 是否被硬编码为始终使用 https?与获取代码时相比,获取 access_token 时如何设置?只是想知道它是否可能是第一次是 http,因为那是用户当前的方案,然后是 https,因为重定向是第二次。

标签: facebook authentication oauth


【解决方案1】:

自从 Facebook 开始在应用程序上要求 SSL 证书以来,我们遇到了类似的问题。

  1. OAuth 2.0 可与 PHP SDK 3.1.1 一起正常工作。如果您使用的是早期版本,请转到 GIT HUB 并升级。

  2. 但是,即使使用 3.1.1,当 Facebook 用户未启用安全浏览时,签名请求也会从 http:// 返回 NULL。

解决方案是 1. 使用 javascript 在脚本顶部添加重定向或 2. 在某处添加 (a href =https://your app url*) 链接。

  1. FB 存在一个重大缺陷,因为当用户未启用安全浏览时,左侧页面菜单中的所有 FB 链接都是 http://。

【讨论】:

    【解决方案2】:

    我有同样的问题,但我发现这是因为用户还没有确认电子邮件地址。因此,对于尚未确认其电子邮件地址的新用户,您将不会获得任何令牌。以防万一,我认为它对这个主题很有用。

    【讨论】:

      【解决方案3】:

      redirect_uri 对我来说是“验证验证码错误”的问题。 用户身份验证请求(返回code)和应用授权/身份验证之间应该是相同的。

      【讨论】:

      • 是的,我也遇到过这个问题,但这里不是这样,谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多