最近在接入新浪的网页授权登录,把遇到的一些问题总结出来:(所有的坑基本都源于不仔细,文档没看清等)
1、先申请应用,得到AppKey和App Secret,应用未审核通过前是可以用申请账号测试的(QQ网页登录也是一样的)
2、配置授权回调地址,未配置的话,调用的时候会报错
3、正式写后端代码接入:
3.1、获取code:调用https://api.weibo.com/oauth2/authorize?client_id=申请的appkey&response_type=code&redirect_uri=code的回调地址
3.2、获取access_token:新浪回调我们上面填写的回掉地址,并携带code=xxxxx,我们拿到code,拼接获取access_token的URL:https://api.weibo.com/oauth2/access_token?client_id=申请的AppKey&client_secret=申请的AppSecret&redirect_uri=回掉地址(同上)&code=6f1b3f09e51fd66be6e547e83443688d&grant_type=authorization_code,注意这里的调用方式是POST,body传{},如果用GET请求会报{"error":"HTTP METHOD is not suported for this request!","error_code":10021,"request":"/oauth2/access_token"},这个接口会返回一个JSON对象:包含access_token、uid、remind_in、expires_in、isRealName 参数
3.3、获取用户信息:https://api.weibo.com/2/users/show.json?access_tkoen=xxx&uid=xxx,参数uid与screen_name二者必选其一,且只能选其一
得到的是JSON字符串,需要转成JSON对象。这里我们就得到了用户授权登录后的信息了,这里得到的用户province和city是数字,可以根据需要自己转换成对应的省市 省份城市编码表,然后根据需求服务端对数据进行缓存。