失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java 静默授权_微信公众号静默授权获取用户信息

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

时间:2024-01-30 22:22:59

相关推荐

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

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

前言

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

正文

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

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

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

注意:

回调需要进行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./sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

请求参数说明:

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");

}

返回参数:

4.获取用户信息:

静默授权获取用户信息

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

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

接口返回参数

总结

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

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

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

本文地址:/nigulasi01/article/details/107484174

希望与广大网友互动??

点此进行留言吧!

如果觉得《java 静默授权_微信公众号静默授权获取用户信息》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。