微信公众号开发获取openid
公眾號開發獲取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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT 1013 数素数 (20)
- 下一篇: 组态软件MCGS(昆仑通态)初识