公众号开发获取openid
微信开放文档链接: 微信公众号获取openid官方文档
一、openid是什么?
微信用户访问微信内部的小程序/公众号产生的用户唯一标识。
请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
二、获取步骤
1.用户同意授权,获取code
在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有 scope 参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
用户同意授权后
如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。
code说明:
code作为换取access_token的票据,每次用户授权带上的 code 将不一样,code只能使用一次,5分钟未被使用自动过期。
2.根据code获取openid
获取 code 后,以GET方式请求以下链接获取openid以及access_token:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
返回的参数如下
{
"access_token":"ACCESS_TOKEN", // 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
"expires_in":7200, // access_token接口调用凭证超时时间,单位(秒)
"refresh_token":"REFRESH_TOKEN", // 用户刷新access_token
"openid":"OPENID", // 用户唯一标识
"scope":"SCOPE" // 用户授权的作用域,使用逗号(,)分隔
}
注意:这里通过 code 换取的是一个特殊的网页授权access_token,与基础支持中的access_token(调用其他接口)不同。
获取openid
代码如下(示例):
/** * 公众号获取openid的方法 * code: 微信网页授权获取到的code */
public Map<String, String> getOpenid(String code) {
Map<String, String> map = new HashMap<>();
map.put("openid", "");
try {
CloseableHttpClient httpclient = HttpClients.createDefault();
ObjectMapper objectMapper = new ObjectMapper();
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + properties.getAppId() + "&secret=" + properties.getAppSecret() + "&code=" + code + "&grant_type=authorization_code";
HttpGet get = new HttpGet(url);
CloseableHttpResponse response = httpclient.execute(get);
String result = EntityUtils.toString(response.getEntity(), "utf-8");
JsonNode json = objectMapper.readTree(result);
if (!json.has("errcode")) {
String openid = json.get("openid").getTextValue();
String accessToken = json.get("access_token").getTextValue();
map.put("openid", openid);
map.put("access_token", accessToken);
//TODO 这里只获取这两个参数,需要获取其他返回参数自行添加
return map;
}
} catch (Exception e) {
log.info("获取openid异常");
e.printStackTrace();
}
return map;
}
总结
以上就是公众号获取openid的步骤,通过openid可以调取微信支付及发送公众号模板消息等等,是用户在公众号的唯一用户标识,笔者建议在获取到openid的同时就把它保存至用户表,以便于后续方便使用,并且openid几乎不会有变化。
今天的文章微信公众号开发获取openid分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/9928.html