关于微信登录呢首先要去腾讯开发者平台选择微信开发者平台点进去注册登录网址为https://open.tencent.com/
选择到网站应用进行创建申请博主是为公司开发所以一些东西都有 那要是个人开发的话微信好像有测试数据可以用你可以去了解一下就只是需要两个值一个是APPID一个是secret来进行开发创建网站应用时指定的回调地址不能写http://或者https://开头就好直接写你的www.xxx.com这样的格式
首先需要写一个接口给前端来获取跳转到微信二维码登录界面的url需要传递的参数就是你在网站创建完成后得到的APPID以及一些其他参数如下需要注意的是redirect_uri这个是回调地址其他的应该解释的很清楚了吧
参数 是否必须 说明
appid 是 应用唯一标识
redirect_uri 是 请使用urlEncode对链接进行处理
response_type 是 填code
scope 是 应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即
state 否 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验
那么请求地址就是为https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
相应的参数填入然后返回给前端由前端进行访问,回调地址(回调是回调到前端页面)要与你注册网站应用时的地址一样不过之后可以在网站应用中修改 构建代码如下(注意这里的回调地址要做一点处理相信你应该能看懂)
//pcwechatId为APPID
String url= "https://open.weixin.qq.com/connect/qrconnect?appid="+pcwechatId+"&redirect_uri=https%3a%2f%2fpc.my51.com%2fWXLOGIN&response_type=code&scope=snsapi_login&state="+state+"#wechat_redirect";
这时用户进入了微信提供的一个页面用户扫码授权登录用户如果不授权则不会跳转到回调地址上,回调完成之后会给前端传送code以及state参数由前端传送到后端接口,那么我们后端收到了code和state的值之后就要去访问微信提供的请求地址来获取access_token只有这个值才能获取用户信息那么参数为
参数 是否必须 说明
appid 是 应用唯一标识,在微信开放平台提交应用审核通过后获得
secret 是 应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
code 是 填写获取的code参数
grant_type 是 填authorization_code
那么请求微信的网址为https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
相应的填入参数就可以了下面是本人打的代码
String url="https://api.weixin.qq.com/sns/oauth2/access_token?appid="+pcwechatId+"&secret="+pcwechatSecret+"&code="+codes+"&grant_type=authorization_code";
String retText = OKHttpUtils.client(url);
Gson gson = new Gson();
Map result = gson.fromJson(retText, new TypeToken
请求地址后得到数据封装成map然后根据名字获取对应的值本人用的springboot对与Appid和Secret都做了封装所以是看不到的后面拿到值后再次请求微信接口参数如下
参数 是否必须 说明
access_token 是 调用凭证
openid 是 普通用户的标识,对当前开发者帐号唯一
lang 否 国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语,默认为zh-CN
那么请求地址为https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
根据获取的值填入就行了傻瓜式操作应该都会吧接下来是本人的代码
url="https://api.weixin.qq.com/sns/userinfo?access_token="+accessToken+"&openid="+openid;
String retTexts = OKHttpUtils.client(url);
Map results = gson.fromJson(retTexts, new TypeToken
一样的操作封装成map然后根据名字获取值然后该保存保存 该返回前端返回前端 到此完成
这次分享就到这里 一个不严谨的博主 dw_weiwei