h5-企业微信单点登录

第一步:先去企业微信后台管理进行配置

URL地址:企业微信后台管理,需要管理员身份的人扫码登录进入才行。

企业ID

企业ID需要记住,在之后的开发中会使用到。
下面的appid就是企业ID。
在这里插入图片描述

第二步:创建应用

选择-企业管理-应用-自建
在这里插入图片描述
点击创建应用
在这里插入图片描述
按照要求填写资料,logo、名称、介绍、可见范围这几项不能为空。填写完成之后点击-创建应用。
在这里插入图片描述

获取应用的ID、应用秘钥

这一步很关键,需要注意。在新的应用里面可以看到有应用ID以及应用秘钥
在这里插入图片描述

到这里已经有三个参数了:appid、应用ID、应用秘钥。

配置网页授权-可信域名

下面就要先配置网页授权了
在这里插入图片描述
基本上这个域名就是项目接口的域名或者H5项目发布上线的域名。
如果这个域名填上去报错,那么可以点击–申请校验域名。
之后将下载的文件让后台开发人员放在这个域名的根目录下面。
在这里插入图片描述
点击确定之后就配置好了网页授权。
之后将上面的域名配置到企业微信授权登录web网页。这一步可以省略,不配置也可以。
在这里插入图片描述
两个的域名是一样的。
在这里插入图片描述

配置应用主页

点击设置-选择网页
在这里插入图片描述
填写网址,这个地方的网址就是企业微信文档里面所说的-构造网页授权链接

在这里插入图片描述
具体的拼接如下:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE&agentid=AGENTID#wechat_redirect

参数说明:

参数必须说明
appid企业的CorpID
redirect_uri授权后重定向的回调链接地址,请使用urlencode对链接进行处理
response_type返回类型,此时固定为:code
scope应用授权作用域。snsapi_base:静默授权,可获取成员的基础信息(UserId与DeviceId);snsapi_privateinfo:手动授权,可获取成员的详细信息,包含头像、二维码等敏感信息。
state重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值,长度不可超过128个字节
agentid应用agentid,建议填上该参数(如果为第三方应用或者代开发自建应用,未填该参数不会触发接口许可自动激活)。snsapi_privateinfo时必填否则报错;
#wechat_redirect终端使用此参数判断是否需要带上身份信息

示例:

假定当前企业CorpID:10001
访问链接:http://www.test.com

根据URL规范,将上述参数分别进行UrlEncode,得到拼接的OAuth2链接为:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=10001&redirect_uri=http%3A%2F%2Fwww.test.com&response_type=code&scope=snsapi_base&state=#wechat_redirect

将上面拼接好的url添加到-应用主页-设置-网页网址。点击确认就可以了。

总结:
1、登录企业微信后台管理,获得企业ID(appid)
2、创建应用获得应用ID(AgentId)、应用秘钥(Secret)
3、配置网页授权域名获得回调url(redirect_uri)
4、配置应用主页网址获得OAuth2链接

第三步:前端代码-获取code

这里写了两张获取code的方式。
1、使用Window.location获取。下面是封装好的获取方法。

/**
 * 
 * @param {string} name 获取url参数 
 */
export function getUrlParameter(name) {
  console.log("路径");
  // console.log(window.location);
console.log(window.location);
  var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
  var r = window.location.search.substr(1).match(reg);
  if (r != null) {
    return unescape(r[2]);
  }
  return null;

}

在这里插入图片描述

2、直接在onload里面使用参数获取方式。

OAuth2URL链接可以在浏览器中打开,会显示一个新的回调url。这一步不用做任何操作。
https://www.test.com/?code=o81fZHalbbCQHNIxqR7oId9PDbLX7ZuovaH6UXFIgtA&state=STATE#/

区别:
两者的区别取决于上面新的url链接。
第一种获取方式:打开之后的URL连接里面域名之后没有 /#/ 参数就可以获取到code。
比如:https://www.test.com/?code=o81fZHalbbCQHNIxqR7oId9PDbLX7ZuovaH6UXFIgtA&state=STATE#/
第二种获取方式:打开之后的URL连接里面域名之后有 /#/ 参数就可以获取到code
比如: https://www.test.com/#/?code=o81fZHalbbCQHNIxqR7oId9PDbLX7ZuovaH6UXFIgtA&state=STATE#/

页面显示

写好的前端代码提交,让后台人员发布一下。发布好之后就可以看到code了。这里是直观的将code显示在页面。主要是联调的时候使用。
在这里插入图片描述

在这里插入图片描述

复制链接在浏览器里面也可以直观的看到code。可以看到在浏览器的URL里面直接带有code参数。
在这里插入图片描述

企业微信内部自建应用的单点登录可以通过以下几个步骤实现: 1. **集成企业微信OAuth授权**[^1]: - 获得企业微信开放平台(OAuth)的配置信息,包括AppID和Secret。 ```java // Java示例代码片段 OAuth2Config config = new OAuth2Config(appId, appSecret); ``` 2. **创建授权URL**: - 使用配置信息构建授权URL,引导用户通过企业微信授权登录。 ```java String authorizeUrl = config.getAuthorizeUrl(redirectUri, scope); // redirectUri是你应用的回调地址 ``` 3. **用户授权并回调**: - 用户在企业微信页面点击授权后,会重定向回指定的`redirectUri`,携带code参数。 - 应用接收到这个请求后,通过code换取access_token。 4. **验证access_token**: - 用code向企业微信服务器交换access_token。 ```java OAuthResult oauthResult = OAuth2Util.getAccessToken(code, config); String accessToken = oauthResult.getAccessToken(); ``` 5. **存储访问令牌**: - 存储access_token以便后续访问企业微信API时无需再次授权。 ```java TokenStorage storage = new MemoryTokenStorage(); // 实现存储逻辑 storage.save(accessToken, refreshToken); ``` 6. **使用access_token调用API**: - 在后续的内部系统访问中,带上access_token作为身份凭证,实现单点登录后的无缝切换。 ```java WeChatApi api = new WeChatApi(accessToken); User user = api.getUserInfo(userId); // 获取用户的详细信息 ``` 相关问题--: 1. 企业微信单点登录的工作原理是什么? 2. 如何确保access_token的安全性? 3. 企业微信OAuth2Config类通常从哪里获取?
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力成为包租婆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值