java 静默授权_微信公众号静默授权获取用户信息

微信公众号静默授权获取用户信息

前言

猿哥 来做一个公众号静默授权获取用户信息,着急要 今天必须完成。(ps:口吐芬芳…事事着急,你倒是人员配满啊。默默放下手中早餐像资本低头)

正文

回到主题,先扒 微信公众号API,通过API我们可以看到步骤:

1.登录微信公众号平台设置你的授权回调域名,并下载加密文件,将加密文件扔到授权回调域名目录下。

2.拼好链接请求获取code。https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

9adff2a4472a4142fbc4fe233eadf84d.png

注意:

回调需要进行URLEncoder.encode();

scope为snsapi_base为静默授权,不弹出授权页面,用户无感知

为snsapi_userinfo显示授权,弹出授权页面(ps:细心同学看到微信API参数图上介绍会发现,只有scope为snsapi_userinfo才可通过openId获取到用户信息,静默授权只可获取到openId,文章不是忽悠人啊!别着急继续看下去)

因为前后端分离这里是将获取code链接返回前端,由前端去请求,微信会携带code调用回调地址。

String url = "";

try {

url = URLEncoder.encode(wxOauthProp.getRedirectUri(), "UTF-8");

logger.info(String.format("转义授权回调链接为:{%s}", url));

} catch (UnsupportedEncodingException e) {

logger.error("转义授权回调链接发生异常", e);

return ReturnInfo.error("转义授权回调链接发生异常")

}

String codeUrl = wxOauthProp.getCodeUrl().replace("APPID",wxOauthProp.getAppid())

.replace("REDIRECT_URI",url)

.replace("SCOPE", "snsapi_base");

return ReturnInfo.success(codeUrl);

3.通过code获取openid:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

请求参数说明:

9533b912dfc1e37397f546d3c2d0ed6b.png

String openIdUrl = wxOauthProp.getOpenIdUrl();

String result = openIdUrl.replace("APPID", wxOauthProp.getAppid())

.replace("SECRET", wxOauthProp.getSecret())

.replace("CODE", code);

String r = requestSSL(result, "GET", null);

logger.info("微信返回result == " + r);

r = r.replace("access_token", "accessToken").replace("expires_in", "expiresIn").replace("refresh_token", "refreshToken");

WxOpenIdInfo info = (WxOpenIdInfo) jsonToBean(r.getBytes(), WxOpenIdInfo.class);

if (info == null || StringUtils.isAnyEmpty(info.getOpenid())) {

logger.error("格式化为WxOpenIdInfo类异常:" + r);

return ReturnInfo.error("未获取到openId");

}

返回参数:

63d7518882402628ac626f49151a72bf.png

4.获取用户信息:

静默授权获取用户信息

接口地址:https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

该接口的access_token 不是第三步返回的授权access_token,而是全局access_token(通过此链接获取 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET) 。

接口返回参数

49fd252418885342963d33512723827e.png

32372a55796495f12c7c04e7153a2438.png

总结

静默授权和非静默授权区别在于:

1.获取code时候参数scope为snsapi_base,显示授权scope参数为snsapi_userinfo。

2.静默授权通过openid和全局access_token 去https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN获取用户信息,显示授权拿授权access_token(通过 https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 获取)和openid请求https://api.weixin.qq.com/sns/userinfoaccess_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN获取用户信息。

本文地址:https://blog.csdn.net/nigulasi01/article/details/107484174

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值