官方文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN
开发工具:postMan和Idea
工具类: cn.hutool.http.HttpUtil;(java 模拟发送htttp请求)
第一步,微信用户扫码获取权限得到code
点击链接/或利用js模拟发送请求获取扫码的二维码图片:
GET:https://open.weixin.qq.com/connect/qrconnect?appid=appid&redirect_uri=redirect_uri&response_type=code&scope=snsapi_login
注:appid为你要跳转的第三方网站的appid
注:redirect_uri为你要跳转的第三方网站的url(提示:url最好用encode加密后的url //百度encode解码)
第二步,
用户扫码后会跳转你指定的链接,code会在链接上显示:(让前端获取链接里面的code,然后传给你。//其实我并不知道java怎么获取…)
第三步,利用code获取微信扫码用户的AccessToken/unionId/openId
发送Get请求获取AccessToken
GET:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
返回参数意思:(//如果返回有errcode,你调用失败了…)
AccessToken:微信调用接口的凭证(和Token差不多)
unionId:(对应(网站)appid下的唯一id,As:比如腾讯,腾讯有两个产品:微信/QQ,你扫码微信获取unionId,这个id是微信id,通过微信Id就能找到你微信的信息)
openId:主要有这个Id,腾讯就能找到你(不限那个产品)
expires_in:AccessToken有效时间(7200指2个小时 26060s)
第四步,
利用accessToken和openId获取用户的信息:(//如果返回有errcode,你调用失败了…)
GET:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
第五步,设计一张wx表,记录微信用户信息,在user表添加wxId字段,通过该Id进行关联user表。
如果微信扫码登陆的话insert 当前微信用户信息数据,并在user新生成一条数据,并用Stringutils.getUUId生成wxId作关联,在如果有该数据则update。
注:模拟调用wx接口的时候最好写个Util
注:postMan 同理(收藏夹)