新浪微博第三方登录注册的坑

新浪微博第三方登录注册的坑

作为一个开发者,深深的被新浪给坑了,走用户授权,我们正常的流程:
1. 访问授权连接
2. 回调获取CODE
3. 用CODE换取Token(深坑)
4. 用Token获取用户OPENID
5. openid和Token 去执行一切可以执行的操作,最基本,获取用户资料
本次要说的坑就是在第3步,用Code换取token

  • HTTP请求方式:post。按照我们正常的操作,模拟FORM表单提交,然后获取结果。 对,上面是我们正常的思路,可是给我们返回的结果永远都是,请求不合法。(我用正常的Form表单试过,可以提交,也可以得到结果,但是我们做开发,不可能再去跳转一个连接,单独去处理这个特殊情况,所以我们需要用到CURL,上面的结果就是CURL给出的结果)

  • 既然,出现问题就要解决,首先想到的就是更改模拟提交Header的属性,但是发现还是同样的结果。

  • 最后换成了把参数拼接成GET方式的URL,然后再进行POST请求,带着出来的POST的参数。一打印,发现得到了 结果

  • 后来,做了个其它微博API的POST测试,发现全是要拼接成GET的方式,但是后来,又想了一下,既然URL已经有参数了,就把POST内容写成空了,发现同样能得到结果。

总结
  • 这个HTTP请求方式,是一个很深的坑,可能微博出于能扩展的目的吧,但是还是不能理解,既然POST,为什么还让开发者搞成GET方式的URL。
    {"error":"invalid_request","error_code":21323,"request":"/2/oauth2/access_token","error_uri":"/2/oauth2/access_token","error_description":"miss client id or secret"}

  • 在新浪微博接入工作里,再碰到这样的问题,大家都可以换成GETURL方式,然后用POST请求。

郝先生

继续阅读此作者的更多文章