OAuth正在破产,但只有当用户来自HTTP时,HTTPS工作正常

时间:2011-10-30 10:30:54

标签: facebook authentication oauth

我正在尝试为使用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"
   }
}

为什么会这样?

3 个答案:

答案 0 :(得分:2)

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

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

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

  3. 解决方案是1.使用javascript在脚本顶部添加重定向,或2.在某处添加(a href = https:// 您的应用网址)链接。

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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