Title
Logan港
细节决定成败,知识改变命运。

官网地址:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

官网提供的四个步骤

  1. 第一步:用户同意授权,获取code
  2. 第二步:通过code换取网页授权access_token
  3. 第三步:刷新access_token(如果需要)
  4. 第四步:拉取用户信息(需scope为 snsapi_userinfo)
  5. 附:检验授权凭证(access_token)是否有效

一、获取code

首先我们需要引导用户打开这个链接

https://open.weixin.qq.com/connect/oauth2/authorize?
appid=appid  //微信的appid
&redirect_uri=   //授权成功后需要跳转的页面
&response_type=code //返回类型,填写code
&scope=snsapi_userinfo
&state=STATE#wechat_redirect
  • 所需要的参数

image

  • 授权效果

当用户点击链接后则会自动出现微信的这个授权页面,当点击确定登入的时候,就会重定向到我们链接中redirect_uri的地址,并且这个地址后面微信会给拼接一个code
image

  • 测试效果

以下就是我测试中跳转的地址,可以看到多了个code参数,这个code参数只有本次有效,重新点击链接则会重新生成,这样我们就拿到了code值。
image

二、获取access_token

第一部获得微信返回的code后,拿着这个CODE 还有APPID还有公钥我们在获取access_token

url = "https://api.weixin.qq.com/sns/oauth2/access_token?
appid=APPID      //公众号的appid
&secret=SECRET  // 公众号的appsecret
&code=CODE      /// 填写第一步获取的code参数
&grant_type=authorization_code"; // 填写为authorization_code

//发送doGet请求
JSONObject htmlAccessToken = HttpUtil.doGet(url);

// 返回说明
// 正确时返回的JSON数据包如下:
{
  "access_token":"ACCESS_TOKEN", // 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
  "expires_in":7200, // access_token接口调用凭证超时时间,单位(秒)
  "refresh_token":"REFRESH_TOKEN", // 用户刷新access_token
  "openid":"OPENID", // 用户唯一标识
  "scope":"SCOPE"  // 用户授权的作用域,使用逗号(,)分隔
}
  • 参数说明

image

  • 返回参数说明

image

三、刷新access_token

image

  • 返回参数说明

image

四、拉取用户信息

//请求方法
String url = https://api.weixin.qq.com/sns/userinfo
?access_token=ACCESS_TOKEN // 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
&openid=OPENID // 用户的唯一标识
&lang=zh_CN // 国家地区语言版本


//发送doGet请求
JSONObject htmlAccessToken = HttpUtil.doGet(url);

//返回说明
//正确时返回的JSON数据包如下:
{   
  "openid": "OPENID",
  "nickname": NICKNAME,
  "sex": 1,
  "province":"PROVINCE",
  "city":"CITY",
  "country":"COUNTRY",
  "headimgurl":"https://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
  "privilege":[ "PRIVILEGE1" "PRIVILEGE2"     ],
  "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"

  • 参数说明

image

  • 返回参数说明

image

  • 检验授权凭证(access_token)是否有效

image

posted on 2021-06-29 17:40  Logan港  阅读(2619)  评论(0编辑  收藏  举报