我在做新浪微博授权登录时,遇到这么一个问题手工输入新浪的账号密码,可以跳到我的回调页获取token,新浪用户信息。但是用他们的二维码扫码登录,token就获取不到了,这是为什么呢?
通过阅读新浪微博API接口文档,
通过阅读新浪微博API接口文档,
文档中有这么一句提示:
HTTP请求方式:POST
这句话太简单了,你们想要人家POST什么?让人认为所有的参数都要作为POST发送过去。可事实偏偏不是这样的, OAuth的服务端只要看到本次提交的行为是POST就行, 至于POST集合里面有没有数据,有些什么数据,它才不会管,所以,无论我们在POST里面添加了什么键|值、无论怎么切换顺序,都是错误的,因为它就没有去读取。
解决办法:需要使用GET和POST的混合方式来提交:
提交的地址应该是:
"https://api.weibo.com/oauth2/access_token?client_id={0}&client_secret={1}&grant_type=authorization_code&code={2}&redirect_uri={3}"
请求方式:POST
POST中的数据:空!
0,1,2,3 对应你自己的参数值
如果用curl提交的网址,加上这一句即可
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);