300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 微信公众号推送模板消息(二):Access_token的获取

微信公众号推送模板消息(二):Access_token的获取

时间:2021-12-20 08:33:10

相关推荐

微信公众号推送模板消息(二):Access_token的获取

简要说明

Access_token 是微信公众号的全局唯一的接口调用凭据,公众号在调用各种接口时都需使用access_token ,由此可以看出在微信公众号开发中access_token的重要性。

因为access_token是接口调用唯一凭据 很重要,所以再单独摘出来说明一下。

我了解的获取 access_token 的方式有两种 :

基础获取 access_token网页授权获取 access_token

基础 access_token 和 网页 access_token 是有一定区别的!!

除了登陆获取的是网页授权的 access_token 之外,其余的都用普通的 access_token 就行

具体官方详介如下:【附:https://developers./doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html】

一、获取基础 access_token

微信官方文档地址:https://developers./doc/offiaccount/Basic_Information/Get_access_token.html

微信公众平台在线接口调试工具:https://mp./debug/

微信官方接口使用说明:

https请求方式: GET https://api./cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

传递参数说明

测试代码

@Testpublic void testToken() {RestTemplate restTemplate = new RestTemplate();// 获取你拿到的 appid 和 secretString appid = "你的APPID";String secret = "你的secrect";// 定义请求地址,替换参数String url = "https://api./cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+secret;//发送请求 得到返回结果ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);String body = responseEntity.getBody();//String转JSONObjectJSONObject object = JSON.parseObject(body);String Access_Token = object.getString("access_token");String expires_in = object.getString("expires_in");// 过期时长(两小时)System.out.println(object);}

正确返回说明

正常情况下,微信会返回下述JSON数据包给公众号:

{"access_token":"ACCESS_TOKEN","expires_in":7200}

返回参数说明

错误返回说明

错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):

{"errcode":40013,"errmsg":"invalid appid"}

其他或更详细的查看上面的微信官方文档!!

二、网页授权获取 access_token (前提是获得授权code)

微信官方文档:https://developers./doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

具体而言,网页授权流程大体分为四步:

1、引导用户进入授权页面同意授权,获取code

2、通过code换取网页授权access_token(与基础支持中的access_token不同)

3、如果需要,开发者可以刷新网页授权access_token,避免过期

4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)

首先配置回调域名,回调域名是用来获取 code 的返回值,下图是在微信测试号配置回调域名,类似于设置一个白名单

如果没有配置 或 配置错误会出现:scope参数错误或没有scope权限 的错误,需要配置正确的回调域名(不需要写 http或https)。

配置JS接口安全域名 可在该域名下调用微信开放的JS相关接口

接口调用请求说明 (1.用户同意授权,获取code【需要在微信中访问】)

请求方式: GET https://open./connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

传递参数说明

测试代码

@Testpublic void testCode() throws UnsupportedEncodingException {// 获取你拿到的 appid 和 secretString appid = "你的APPID";String secret = "你的secrect";// 使用 urlEncode 对链接进行处理 [授权回调域名()]String encodeurl = URLEncoder.encode("http://你配置的授权回调页面域名/getCode","UTF-8");//定义请求地址String url = "https://open./connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";url = url.replace("APPID",appid).replace("REDIRECT_URI",encodeurl);// 获得拼接后的访问链接 复制到微信访问; 访问后的地址会含有code和state(例如:/getCode?code=053NvJ0w3DU3DV2rkZZv3AbSVk1NvJ0R&state=STATE)System.out.println(url);}

这样会输出一个 URL 链接,复制到微信里进行访问;然后再复制访问成功的链接 粘贴到其他地方进行查看 或 用默认浏览器打开进行查看链接:

接口调用请求说明 (2.根据 code 获取网页授权access_token、openid 信息)

请求方式: GET https://api./sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

传递参数说明

测试代码

@Testpublic void testWebpageAccessToken() {RestTemplate restTemplate = new RestTemplate();// 获取你拿到的 appid 和 secretString appid = "你的APPID";String secret = "你的secrect";String code = "你获取到的code";//定义请求地址String url = "https://api./sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";url = url.replace("APPID",appid).replace("SECRET",secret).replace("CODE",code);//发送请求 得到返回结果JSONObject obj = JSON.parseObject(restTemplate.getForObject(url,String.class));String access_token = obj.getString("access_token");String refresh_token = obj.getString("refresh_token");String openid = obj.getString("openid");String scope = obj.getString("scope");String expires_in = obj.getString("expires_in");System.out.println(obj);System.out.println("access_token 和 有效时长:"+access_token +" : "+expires_in);}

正确返回说明

正确时返回的JSON数据包如下:

{"access_token":"ACCESS_TOKEN","expires_in":7200,"refresh_token":"REFRESH_TOKEN","openid":"OPENID","scope":"SCOPE" }

返回参数说明

错误返回说明

错误时微信会返回JSON数据包如下(示例为Code无效错误):

{"errcode":40029,"errmsg":"invalid code"}

其他或更详细的查看上面的微信官方文档!!

在这里稍微介绍了一下Access_token 的获取,区别;一些具体介绍官方文档都有。

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