当前位置:   article > 正文

微信开发:网页授权获取 access_token_获取授权token网页授权

获取授权token网页授权

关于 access_token 

access_token 是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用 access_token 

获取 access_token 的方式有两种 

         1.基础获取 access_token

         2.网页授权获取 access_token

其中 基础 access_token 和 网页 access_token 也是有区别的!!!除了登陆获取的是网页授权的 access_token 之外,其余的都用普通的 access_token 就可以了,具体详介如下图:

首先介绍一下,第一种方式获取基础 access_token

官方地址:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html

在线接口调试工具测试微信开发:接口调试工具

接口调用请求说明

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

参数说明

参数是否必须说明
grant_type获取access_token填写client_credential
appid第三方用户唯一凭证
secret第三方用户唯一凭证密钥,即appsecret

返回说明

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

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

参数说明

参数说明
access_token获取到的凭证
expires_in凭证有效时间,单位:秒

测试 Demo

  1. public static void main(String[] args) {
  2. // 获取 appid 和 appsecret == 公众号 ID 和 SERCRET
  3. String appid = "123";
  4. String appsecret = "312";
  5. // 定义请求地址,替换参数
  6. String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+ appid +"&secret="+appsecret;
  7. //发送请求 的到返回结果
  8. String json = HttpUtil.doGet(url,new HashMap<String,Object>(),"");
  9. }

第二种方式网页授权获取 access_token

详细代码可查看:微信开发之获取 openid

网页授权适用于用户在微信客户端中访问第三方网页,然后可以通过授权机制来获取用户基本信息

网页授权具体流程大概分为三步

1、通过授权页面获取 code 

2、通过 code 获取到 access_token

3、用 access_token 换取 openid (支持 unionID 机制)

官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

首先配置回调地址,回调地址是用来获取 code 的返回值,这个是我在微信测试号配置安全域名,其实就相当于是一个白名单

接口调用请求说明 (获取 code 信息)

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

参数说明

参数是否必须说明
appid公众号的唯一标识
redirect_uri授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理
response_type返回类型,请填写code
scope应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 )
state重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
#wechat_redirect无论直接打开还是做页面302重定向时候,必须带此参数

接口调用请求说明 (根据 code 获取 openid 信息)

请求方式: GEThttps://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

参数说明

参数是否必须说明
appid公众号的唯一标识
secret公众号的appsecret
code填写第一步获取的code参数
grant_type填写为authorization_code

测试 Demo

  1. String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
  2. url = url.replace("APPID",appid).replace("SECRET",appsecret).replace("CODE","xxxx");
  3. //发送请求 的到返回结果
  4. String json = HttpUtil.doGet(url,new HashMap<String,Object>(),"");
  5. System.out.println(json);

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

  1. {
  2. "access_token":"ACCESS_TOKEN",
  3. "expires_in":7200,
  4. "refresh_token":"REFRESH_TOKEN",
  5. "openid":"OPENID",
  6. "scope":"SCOPE"
  7. }
参数描述
access_token网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_inaccess_token接口调用凭证超时时间,单位(秒)
refresh_token用户刷新access_token
openid用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
scope用户授权的作用域,使用逗号(,)分隔
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/947379
推荐阅读
相关标签
  

闽ICP备14008679号