H5微信授权登入(后台Java ) 您所在的位置:网站首页 微信h5开发授权demo H5微信授权登入(后台Java )

H5微信授权登入(后台Java )

2023-08-29 09:45| 来源: 网络整理| 查看: 265

最近做一个小工具,通过公众号菜单打开。页面使用H5来写的。需要用户通过菜单打开小工具的时候要求用户授权微信信息,进行登入。

接下来说说大致步骤吧,其实微信公众号的开发文档介绍得很详细。 微信公众号开发文档链接: 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)是否有效 (后台)

其实就是获取在前端用 window.location.href 打开微信URL页面 url中包含了回调页面的参数。 如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。这样我们就得到了 code。前端的任务就完成了。我们可以利用这个code到后台换取accessToken和通过accessToken拉取用户信息。

跳转回调redirect_uri,应当使用https链接来确保授权code的安全性。(域名必须在公众号后台配置) 地址: 设置与管理->开发->接口权限->网页服务->网页授权->网页授权获取用户基本信息

部分代码: 1,获取code,并提示用户授权

window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${url}&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect`

2,通过code换取网页授权access_token 这一步是在后台进行

```java //公众号appid public static final String APPID = "APPID "; //公众号appsecert public static final String APPSECRET = "APPSECRET ";

请求以下链接获取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

String url = GET_ACCESS_TOKEN_URL.replace("CODE", code).replace("APPID", APPID).replace("SECRET", APPSECRET); JSONObject jsonObject = httpRequest(url, "GET", "");

正常返回时

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

请求有误时

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

3,获取用户信息

请求地址 http:GET(请使用https协议) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

String userInfoUrl = GET_USER_INFO_URL.replace("ACCESS_TOKEN", access_token).replace("OPENID", openid); JSONObject infoResult = httpRequest(userInfoUrl, "GET", "");

正常返回

{ "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" }

错误返回

{"errcode":40003,"errmsg":" invalid openid "}

刷新和校验验证码我就不贴代码了。是同上的逻辑。 4,刷新access_token(如果需要) (后台) 获取第二步的refresh_token后,请求以下链接获取access_token: https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

5,检验授权凭证(access_token)是否有效 (后台) http:GET(请使用https协议) https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有