企业微信扫码登录

1.扫码登录流程图

2..成为企业微信管理员

3. 登录企业管理端后台->进入需要开启的自建应用->配置可性域名和授权回调域,获取agentid,appid,进入如下页面

注:配置授权回调域,必须与访问链接的域名一致。比如:redirect_uri ="http://test.vx.com:8081/cgi-bin/login",那授权回调域为:test.vx.com:8081

3.1 获取agentid,appid

4. 构造独立窗口登录二维码链接

开发者需要构造如下的链接来获取code参数:

https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=CORPID&agentid=AGENTID&redirect_uri=REDIRECT_URI&state=STATE
1.3.1 参数说明

参数说明

参数必须说明
appid appid 企业微信的CorpID,在企业微信管理端查看
agentid授权方的网页应用ID,在具体的网页应用中查看
redirect_uri重定向地址,需要进行UrlEncode
state用于保持请求和回调的状态,授权请求后原样带回给企业。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议企业带上该参数,可设置为简单的随机数加session进行校验
lang自定义语言,支持zh、en;lang为空则从Headers读取Accept-Language
若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名与网页应用的可信域名不一致。
若用户不在agentid所指应用的可见范围,扫码时会提示无权限。

返回说明
用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数

redirect_uri?code=CODE&state=STATE

若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数

redirect_uri?state=STATE
1.3.2 示例

假定当前 企业CorpID:wxtest003

开启授权登录的应用ID:123456

登录跳转链接:http://api.test.com/login

state设置为:weblogin@test

配置的授权回调域为:api.test.com

根据URL规范,将上述参数分别进行UrlEncode,得到拼接的OAuth2链接为: https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=wxtest003&agentid=123456&redirect_uri=http://api.test.com/login&state=weblogin@test

5. 前端渲染生成二维码

步骤一:引入JS文件

在需要展示企业微信网页登录二维码的网站引入如下JS文件(支持https):

新版(20220415更新):https://wwcdn.weixin.qq.com/node/wework/wwopen/js/wwLogin-1.2.7.js

步骤二:在需要使用微信登录的地方实例JS对象

注意:从wwLogin-1.2.5.js开始需要使用new WwLogin进行实例化

var wwLogin = new WwLogin({
		"id": "wx_reg",  
		"appid": "",
		"agentid": "",
		"redirect_uri": "",
		"state": "",
		"href": "",
		"lang": "zh",
});

参数说明

参数必须说明
id企业页面显示二维码的DOM id
appid企业微信的CorpID,在企业微信管理端查看
agentid授权方的网页应用ID,在具体的网页应用中查看
redirect_uri重定向地址,需要进行UrlEncode
state用于保持请求和回调的状态,授权请求后原样带回给企业。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议企业带上该参数,可设置为简单的随机数加session进行校验
href自定义样式链接,企业可根据实际需求覆盖默认样式。详见文档底部FAQ
lang自定义语言,支持zh、en;lang为空则从Headers读取Accept-Language
self_redirecttrue:手机点击确认登录后可以在 iframe 内跳转到 redirect_uri,false:手机点击确认登录后可以在 top window 跳转到 redirect_uri。默认为 false。

方法说明

方法说明
destroyed无需登录时,可手动销毁实例
wwLogin.destroyed() // 注意wwLogin为实例对象

1.网站内嵌二维码企业微信登录JS代码中href字段作用?
答:如果企业觉得企业微信团队提供的默认样式与自己的页面样式不匹配,可以自己提供样式文件来覆盖默认样式。举个例子,如企业觉得默认二维码过大,可以提供相关css样式文件,并把链接地址填入href字段(只支持https协议的资源地址):

.impowerBox .qrcode {width: 200px;}
.impowerBox .title {display: none;}
.impowerBox .info {width: 200px;}
.status_icon {display: none  !important}
.impowerBox .status {text-align: center;} 

6. 企微回调后端接口,后端消费code,获取企微的唯一userid,处理登录逻辑

假如redirect_uri=http://api.test.com/login,当扫码登录后,企业微信会回调http://api.test.com/login后端接口,并让前端传回code和state

7. 获取access_token(HttpClients请求)

请求方式: GET(HTTPS
请求地址: https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET

参数说明:

参数必须说明
corpid企业ID,获取方式参考:术语说明-corpid
corpsecret应用的凭证密钥,注意应用需要是启用状态,获取方式参考:术语说明-secret

权限说明:
每个应用有独立的secret,获取到的access_token只能本应用使用,所以每个应用的access_token应该分开来获取

返回结果:

{
   "errcode": 0,
   "errmsg": "ok",
   "access_token": "accesstoken000001",
   "expires_in": 7200
}

参数说明:

参数说明
errcode出错返回码,为0表示成功,非0表示调用失败
errmsg返回码提示语
access_token获取到的凭证,最长为512字节
expires_in凭证的有效时间(秒)

注意事项:
开发者需要缓存access_token,用于后续接口的调用(注意:不能频繁调用gettoken接口,否则会受到频率拦截)。当access_token失效或过期时,需要重新获取。

access_token的有效期通过返回的expires_in来传达,正常情况下为7200秒(2小时)。

8. 获取访问用户身份userid(HttpClients请求),进行相应逻辑(如登录)

请求方式:GET(HTTPS
请求地址:https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
参数说明:

参数必须说明
access_token调用接口凭证
code通过成员授权获取到的code,最大为512字节。每次成员授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。

权限说明:
跳转的域名须完全匹配access_token对应应用的可信域名,否则会返回50001错误。

返回结果:
a) 当用户为企业成员时(无论是否在应用可见范围之内)返回示例如下:

{
   "errcode": 0,
   "errmsg": "ok",
   "userid":"USERID",
   "user_ticket": "USER_TICKET"
}
参数说明
errcode返回码
errmsg对返回码的文本描述内容
userid成员UserID。若需要获得用户详情信息,可调用通讯录接口:读取成员。如果是互联企业/企业互联/上下游,则返回的UserId格式如:CorpId/userid
user_ticket成员票据,最大为512字节,有效期为1800s。
scope为snsapi_privateinfo,且用户在应用可见范围之内时返回此参数。
后续利用该参数可以获取用户信息或敏感信息,参见"获取访问用户敏感信息"。暂时不支持上下游或/企业互联场景

根据提供的引用内容,实现企业微信登录需要以下步骤: 1. 在企业微信后台创建应用: - 登录企业微信后台,点击左侧菜单的“应用管理”。 - 点击“创建应用”,填写应用名称、Logo等信息。 - 在“应用可见范围”中选择需要访问应用的部门或成员。 - 在“权限管理”中选择需要的权限,例如获取成员信息、获取部门信息等。 - 点击“创建”完成应用的创建。 2. 获取应用的AgentId和Secret: - 在应用列表中找到刚创建的应用,点击进入应用详情页。 - 在详情页中可以找到AgentId和Secret,这些信息将在后续的开发中使用。 3. 在禅道中实现企业微信登录: - 在禅道的登录页面中添加企业微信登录的入口。 - 当用户点击企业微信登录时,生成一个随机的state参数,并将其保存在session中。 - 生成企业微信登录的URL,包括应用的AgentId、重定向URL和state参数。 - 将用户重定向到生成的URL,用户将在企业微信描二维并确认登录。 - 企业微信将用户重定向回重定向URL,并附带code和state参数。 - 在重定向URL的处理逻辑中,验证state参数是否与之前保存的一致。 - 使用code参数调用企业微信的接口,获取用户的openid和access_token。 - 根据openid和access_token,可以获取用户的详细信息,例如姓名、头像等。 - 根据用户的信息,在禅道中创建或更新用户的账号信息。 - 将用户登录到禅道,完成企业微信登录的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值