第一节、 无access_token登录:
第一步: app发起微信授权,用户授权完成之后,回调得到code
参考:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317851&token=&lang=zh_CN
第二步: app将code发送给我们自己的server
第三步: server利用code获取到openid, access_token, refresh_token,
获取信息url为:
var url="https://api.weixin.qq.com/sns/oauth2/access_token?appid="+WX_APPID+"&secret="+WX_SECRET+"&code="+data.code+"&grant_type=authorization_code";
第四步:server利用openid和access_token取到用户信息,其中包括unionid, nickname, headimgurl
获取信息url为:
var url = 'https://api.weixin.qq.com/sns/userinfo?access_token='+access_token +'&openid='+openid;
第五步:server把unionid当做用户名进行注册(如果没有注册则注册,否则直接登录),登录,并将登录之后的玩家游戏数据发给app
var data = {
userdataingame:{
name:unionid,
nick:nickname,
icon:headimgurl,
},
weixindata:{
openid:openid,
access_token:access_token,
refresh_token:refresh_token,
}
},
第六步:app收到玩家的登录成功信息之后,把weixindata部分存储到本地,留待下次登录使用
第二节、带access_token登录(首次登录之后30天内):
第一步:app启动的时候,检测本地是否有access_token,openid,refresh_token
如果没有则走第一节介绍的流程
第二步:app检测access_token是否有效
利用如下url进行检测:
https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID
第三步:app检测到access_token有效,直接进入第四步,否则利用refresh_token获得一个新的access_token
获得新的token的url为:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
第四步:app获得了新的access_token了,则发给server:access_token,openid,refresh_token
如果app刷新失败,则需要从第一节第一步走起
第五步:server收到access_token,openid,refresh_token,则直接走到第一节第四步的流程上去完成之后的登录