刚开始写该接口的时候一脸茫然,后来发现,说白了就是对微信API的调用。按照步骤,想获取什么参数,就发送什么URL链接请求,微信API会返回给你想要的参数。代码就不贴了,无非就是通过URL,发送请求,然后获取参数,很容易实现。具体步骤微信官方文档有,在此也借鉴了一下。
** 微信登录步骤流程**
1.开放平台注册
在进行微信OAuth2.0授权登录接入之前,首先在微信开放平台注册开发者帐号,获得相应的AppID和AppSecret,申请微信登录且通过审核后,方可进行下一步接口调用。发送如下URL请求,微信服务器端会返回对应的code及其它参数
String url = "https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect";
请求参数说明:
APPID:为平台注册时获取的appid
REDIRECT_URI:重定向地址,需要进行UrlEncode
response_type:填code
scope:应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可
state:用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
请求参数说明:
APPID: 应用唯一标识,在微信开放平台提交应用审核通过后获得
AppSecret: 应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
code: 填写第二步获取的code参数
grant_type: 填authorization_code(固定,来自于官方文档)}
返回参数说明:
access_token 接口调用凭证
expires_in access_token接口调用凭证超时时间,单位(秒)
refresh_token 用户刷新access_token
openid 授权用户唯一标识
scope 用户授权的作用域,使用逗号(,)分隔
unionid 当且仅当该移动应用已获得该用户的userinfo授权时,才会出现该字段错误返回样例:
{"errcode":40029,"errmsg":"invalid code"}4.通过access_token获取用户微信信息
String url = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID";
参数说明:
ACCESS_TOKEN:第三步获取的access_token
OPENID:第三步获取的openId返回参数说明:
openId: 用户标识
nickName: 用户昵称
sex: 男1,女2,0未知
country: 国家
province: 省份
city: 城市
headImgUrl: 头像链接
privilegeList: 用户特权信息
unionId: 全局唯一标识