PC端H5应用免登
企业将已有系统的H5页面接入到WeLink,在WeLink PC客户端中打开,系统可以自动获得正在访问用户的身份信息,而无需用户再次输入用户密码。
在WeLink中使用轻应用,必须进入WeLink开放平台,创建一个"轻应用",并设置应用在PC端打开的首页地址,发布为线上版应用后即可在PC端展示。如下图:

WeLink默认用系统浏览器打开轻应用,开发者可以配置“PC端高级选项”,WeLinkPC支持用系统浏览器打开轻应用,二者差异对比如下:
| 差异点 | PC系统默认浏览器(推荐) | WeLink内置浏览器(不推荐) |
|---|---|---|
| 配置方式 | 设置PC端地址,勾选PC端高级选项 | 设置PC端地址 |
| 免登方式 | 占位符方式,见下文描述 | 与手机轻应用免登一致 链接 |
| 展示方式 | PC业务图标入口 | PC业务图标入口 |
| 打开方式 | 电脑默认浏览器 | PC客户端内置浏览器 |
| 功能 | 与系统浏览器保持一致 | 1.仅可实现简单浏览类页面展示,其他浏览器功能无法保障全部支持 2.请提前进行功能全量验证,发现问题后尽快切换PC默认浏览器方式 |
占位符方式免登
第一步、获取client_id及client_secret,从轻应用的基本信息中查看
第二步、配置PC端首页地址,规则如下
假定PC端打开链接为:https://www.example.com/erp/xxx , 在链接后面添加参数:code=$(code)
那么配置地址则为:https://www.example.com/erp/xxx?code=$(code)

第三步、获取免登授权码
WeLink在打开系统浏览器的同时,会通过调用特定接口获取真实免登码,并替换$(code)为真实免登码,在服务端获取到授权码后,与access_token一起获取用户身份,下同轻应用免登
第四步、获取access_token
获取access_token
此接口用于We码小程序(或者H5轻应用)与WeLink服务端API后台集成,实现免登, 通讯录查询等接口。
- 进入开放平台开发者后台,打开具体的应用,在应用的“基本信息”中获取相应的client_id和client_secret获取应用id和应用密钥。

请求格式说明
调试工具: 在线调试
请求方式: POST (HTTPS)
请求地址: https://open.welink.huaweicloud.com/api/auth/v2/tickets
请求头部:
Content-Type: application/json
请求参数:
{
"client_id": "20190828163922073733756",
"client_secret": "7c4f1e6e-f2db-42bd-a2c1-b2905c1c2a5b"
}请求参数说明:
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| client_id | String | 是 | client_id 即 app_id,可在We码小程序开放平台中查看。 |
| client_secret | String | 是 | client_secret 即 app_secret,可在We码小程序开放平台中查看。 |
请求示例:
curl -X POST
https://open.welink.huaweicloud.com/api/auth/v2/tickets
-H 'Content-Type: application/json'
-d '{
"client_id": "20190828163922073733756",
"client_secret": "7c4f1e6e-f2db-42bd-a2c1-b2905c1c2a5b",
}'响应格式说明
返回结果:
{
"code": "0",
"message": "ok",
"access_token": "5e2584ad-c6ca-4cf9-8513-8216e4759905",
"expires_in": 7200
}返回参数说明:
| 参数 | 说明 |
|---|---|
| access_token | 认证后可信任的Token凭证。 |
| expires_in | 数值型数据,单位是秒,如:7200,代表当前access_token的有效期,该值可能会随平台调整而动态变化,不是固定不变的。 最佳实践: 1、access_token缓存时间为(xxxx-300)秒,假设当前expires_in 的返回值是1800(该值是动态变化的,可能是其他值,如1000等),缓存时间应该设置为(1800-300=1500)秒; 2、若access_token失效,清理缓存,并重新获取access_token。 |
| code | 数据正常返回“0”,如果发生错误,会返回对应的错误码。 |
| message | 返回信息,包括接口请求发生错误时的详细信息。 |
错误码说明:
| 错误码 | 说明 |
|---|---|
| 41500 | 获取access_token异常。 |
| 41403 | 通过clientId获取access_token失败次数过多,被锁定。 |
| 41579 | clientId为空。 |
| 41580 | clientSecret为空。 |
| 10007 | clientId或clientSecret有误 |
| 411145 | 系统异常 |
| 1000 | access_token失效或者不可用。 |
第五步、获取userId
通过免登授权码查询用户userId
通过免登授权码code获取用户唯一标识userId
请求格式说明
调试工具: 在线调试
请求方式: GET (HTTPS)
请求地址: https://open.welink.huaweicloud.com/api/auth/v2/userid
认证方式: access_token,请参考获取access_token
获取此接口的access_token时,参数不需要传tenantId
请求头部:
x-wlk-Authorization: access_token
请求参数说明:
| 参数名 | 参数说明 | 类型 | 必选 |
|---|---|---|---|
| code | 免登授权码,获取方式参考We码小程序免登授权码或者H5轻应用免登授权码 | string | 是 |
请求示例:
curl -H "x-wlk-Authorization: access_token" https://open.welink.huaweicloud.com/api/auth/v2/userid?code=xxx
响应格式说明
返回结果:
{
"code":"0",
"message":"ok",
"userId": "zhangsan@welink",
"tenantId": "AXSCC123ND2DESC..."
}返回参数说明:
| 参数 | 说明 |
|---|---|
| code | 数据正常返回“0”,如果发生错误,会返回对应的错误码 |
| message | 返回信息,包括接口请求发生错误时的详细信息 |
| userId | 用户帐号 |
| tenantId | 租户id |
错误码说明:
| 错误码 | 说明 |
|---|---|
| 41500 | 获取用户信息异常。 |
第六步、获取用户详细信息
查询用户详情
使用用户corpUserId/userId/mobileNumber获取用户详细数据。调用通讯录接口能获取哪些部门和员工的数据是受通讯录权限范围控制的,通讯录权限范围请参考模块概述。
请求格式说明
调试工具: 在线调试
请求方式: POST (HTTPS)
请求地址: https://open.welink.huaweicloud.com/api/contact/v2/user/detail
认证方式: access_token,请参考获取access_token
权限申请:开发者在调用本接口前,需要到开发者后台申请接口权限,申请流程请参考接口权限申请
请求头部:
Accept-Charset: UTF-8 Content-Type: application/json x-wlk-Authorization: access_token lang: zh //通讯录返回语言。英文en, 中文zh(默认中文)
请求参数:
{
"corpUserId": "lklk1",
"userId": "lklk1@welink",
"mobileNumber": "132xxxxxx"
}请求参数说明:
| 参数 | 必填 | 参数类型 | 说明 |
|---|---|---|---|
| userId | 特殊可选 | String | WeLink侧员工ID 与corpUserId是映射关系,userId、corpUserId和mobileNumber不能同时为空或者三个都填写优先匹配规则是userId>corpUserId>mobileNumber |
| corpUserId | 特殊可选 | String | 客户侧员工ID,该用户在租户自身系统的登录标识,用于认证和账号映射(客户内唯一) 创建用户成功后会生成对应的WeLink userId 与userId是映射关系,userId、corpUserId和mobileNumber不能同时为空或者或者三个都填写优先匹配规则是userId>corpUserId>mobileNumber |
| mobileNumber | 特殊可选 | String | WeLink登陆绑定手机号,租户内不可重复(其他用户不可见),userId、corpUserId和mobileNumber不能同时为空或者三个都填写优先匹配规则是userId>corpUserId>mobileNumber |
请求示例:
curl -X POST \
'https://open.welink.huaweicloud.com/api/contact/v2/user/detail' \
-H 'Accept-Charset: UTF-8' \
-H 'Content-Type: application/json' \
-H 'x-wlk-Authorization: access_token' \
-d '{"请求参数 json格式"}'响应格式说明
返回结果:
{
"code": "0",
"message": "OK",
"userStatus": "3",
"userId": "zhangshan2@welink",
"corpUserId": "111",
"userNameCn" : "张三",
"userNameEn": "zhangsan",
"sex": "F",
"mobileNumber": "+86-15115127336",
"phoneNumber": ["+86-15115127336", "+86-15115127311"],
"mainCorpDeptCode": "1000",
"mainDeptCode": "100",
"corpDeptCodes": ["1000", "1001", "1002", "1003"],
"deptCodes": ["100", "101", "102", "103"],
"orderInDepts": {"100": 1, "101": 2, "102": 3},
"orderInCorpDepts": {"1000": 1, "1001": 2, "1002": 3},
"userEmail": "zhangsan@huawei.com",
"avatar", "https://aaa/ssxxx?t=2020-04-29%2020:49:46",
"employeeId": "001",
"landlineNumber": "0755-88888888",
"businessAddress": "广东省深圳",
"baseLocation": "",
"position": "产品经理",
"corpSecretary": "lisi",
"secretary": "lisi",
"remark": "test",
"isActivated": 1,
"isAdmin":1,
"sipNum": "30293402",
"isHidePhoneNumber": 0,
"seniorMode": 0,
"roleIds":["10", "11", "12"],
"extAttr":{"名称1": "value", "名称2": "value", "名称3": "value"},
"creationTime": "2018-05-03 13:58:02",
"lastUpdatedTime": "2018-05-03 13:58:02"
}返回参数说明:
| 参数 | 必选 | 参数类型 | 说明 |
|---|---|---|---|
| code | 是 | String | 数据正常返回"0",如果发生错误,会返回对应的错误码。 |
| message | 是 | String | 数据正常返回"OK" |
| userId | 是 | String | WeLink侧员工ID 与corpUserId是映射关系 |
| corpUserId | 否 | String | 客户侧员工ID,该用户在租户自身系统的登录标识,用于认证和账号映射(客户内唯一) 创建用户成功后会生成对应的WeLink userId 与userId是映射关系 |
| mobileNumber | 是 | String | WeLink登陆绑定手机号,租户内不可重复(其他用户不可见)。支持国家码比如+86-xxxx,如果不传默认是+86 |
| userStatus | 是 | String | 状态, 1:未开户2:开户中 3:已开户 4:已销户 5:销户中 6:已失效 |
| userNameCn | 是 | String | 员工中文姓名 |
| userNameEn | 否 | String | 员工英文名,未填写会由系统自动转为拼音 |
| sex | 否 | String | 性别。仅:""/M/F, "":空,M: 男, F: 女 |
| phoneNumber | 否 | Array[String] | 个人信息手机号码,支持传多个,最多支持5个。如果不填写会默认把绑定手机号码mobileNumber同步过来;如果传了手机号码则mobileNumber不可见(其他用户可见) |
| mainDeptCode | 是 | String | WeLink侧人员userId的主部门ID,当为空时,默认取deptCodes部门信息第一个部门为人员主部门 与mainCorpDept是映射关系 |
| mainCorpDeptCode | 否 | String | 客户侧人员corpUserId的主部门ID,当为空时,默认取corpDeptCode部门信息第一个部门为人员主部门 与mainDeptCode是映射关系 |
| deptCodes | 是 | Array[String] | WeLink侧人员userId的所有部门ID,请先完成部门信息同步,否则传递该字段,系统无法识别该用户的部门,允许多个部门 与corpDeptCodes是映射关系 |
| corpDeptCodes | 否 | Array[String] | 客户侧人员corpUserId的所有部门ID,请先完成部门信息同步,否则传递该字段,系统无法识别该用户的部门,允许多个部门 与deptCodes是映射关系 |
| orderInDepts | 否 | Object | WeLink侧{"部门ID":人员在这个部门里面的排序} 若不同员工在同步时对同一部门指定了相同排序,则最新同步的员工会替代之前同步的员工的排序,举例:员工A同步时指定了部门排序为{"1000":1},后续员工B同步时同样指定了{"1000":1},则B会取代A,排在部门1000的第一位,且A排在B的后一位,以此类推。 与orderInCorpDepts是映射关系 |
| orderInCorpDepts | 否 | Object | 客户侧{"部门ID":人员在这个部门里面的排序} 若不同员工在同步时对同一部门指定了相同排序,则最新同步的员工会替代之前同步的员工的排序,举例:员工A同步时指定了部门排序为{"1000":1},后续员工B同步时同样指定了{"1000":1},则B会取代A,排在部门1000的第一位,且A排在B的后一位,以此类推。 与orderInDepts是映射关系 |
| userEmail | 否 | String | 邮箱 |
| avatar | 否 | String | 头像url,格式http://aaa/aaa/aaa?t=2020-04-29%2020:49:46 url里面的参数t表示头像最后更新时间 |
| employeeId | 否 | String | 工号 |
| landlineNumber | 否 | String | 个人信息座机 |
| businessAddress | 否 | String | 办公地址信息 |
| baseLocation | 否 | String | 个人常驻地 |
| sipNum | 否 | String | WeLink会议软终端号码 |
| position | 否 | String | 员工职务字段信息 |
| secretary | 否 | String | 秘书(WeLink侧人员userId)。在导入用户时,如果秘书帐号不存在,需要先在WeLink中创建秘书账号。 与corpSecretary是映射关系 |
| corpSecretary | 否 | String | 秘书(客户侧用户corpUserId)。在导入用户时,如果秘书帐号不存在,需要先在WeLink中创建秘书账号。 与secretary是映射关系 |
| remark | 否 | String | 备注信息 |
| isActivated | 是 | Integer | 用户是否已激活(用户登陆WeLink客户端表示已激活), 1为已激活,0为未激活 |
| isAdmin | 是 | Integer | 是否为企业的管理员,1表示是,0表示不是(默认) 注意:该字段有延时和时效性问题,请使用判断用户是否为应用管理员更精确 |
| isHidePhoneNumber | 是 | Integer | 是否隐藏phoneNumber手机号码。0:显示手机号(默认) 1:隐藏手机号,WeLink不可拨打 2:隐藏手机号,WeLink可拨打 |
| emailLoginAccount | 是 | String | 邮箱域账号,当邮箱登录不是邮箱地址时可以使用该字段。 该字段为默认自定义字段,可在WeLink管理后台设置->通讯录设置->员工信息设置中的自定义信息[邮箱域账号] 可以在WeLink管理后台->通讯录->人员编辑->扩展信息中的邮件域账号进行操作管理 |
| seniorMode | 是 | Integer | 开启高管模式,默认关闭,开启后手机号会被隐藏,只有高管之间可以查看。1表示是,0表示不是(默认) |
| personType | 否 | String | 员工类型。可以自行输入:正式员工;外包;劳务;顾问等 该字段当做人员信息,会显示在端侧的姓名工号旁边,默认是不显示,可在WeLink管理后台设置->通讯录设置->员工信息设置中的默认信息设置开启显示 |
| timeZone | 否 | String | timeZone 否 String 用户所在时区,默认为东八区GMT+:08:00 |
| roleIds | 否 | Array[String] | 当员工存在多个角色中时,返回WeLink侧的roleIds 与corpRoleIds是映射关系 在导入用户时,如果角色不存在,需要先在开放平台角色管理中创建维护角色,否则传递该字段,系统无法识别该用户的角色;如果清空所属角色值传入{"roleIds":[]} |
| corpRoleIds | 否 | Array[String] | 当员工存在多个角色中时,返回客户侧的corpRoleIds 与corpIds是映射关系 在导入用户时,如果角色不存在,需要先在开放平台角色管理中创建维护角色,否则传递该字段,系统无法识别该用户的角色;如果清空所属角色值传入{"corpRoleIds":[]} |
| extAttr | 否 | Object | {"自定义字段名称":"自定义字段值"} ,如果自定义字段不存在,需要先在WeLink管理后台设置->通讯录设置->员工信息设置中创建自定义字段,否则忽略未知属性的赋值。 |
| creationTime | 是 | String | 员工创建时间(入职时间) |
| lastUpdatedTime | 是 | String | 最后更新时间 |
异常返回结果:
{
"code": "47111",
"message": "账户不存在"
}返回参数说明:
| 参数 | 必选 | 参数类型 | 说明 |
|---|---|---|---|
| code | 是 | String | 响应结果状态码 |
| message | 是 | String | 返回信息,包括接口请求发生错误时的详细信息。数据正常返回"OK" |
错误码说明:
| 错误码 | 说明 |
|---|---|
| 47000 | 无此部门访问权限 请参考通讯录权限范围请参考模块概述 |
| 47003 | 参数为空 |
| 47004 | 参数不对 |
| 47101 | Token格式错误 |
| 47102 | 无权限 |
| 47103 | Token过期 |
| 47111 | 账户不存在 |
常见问题
1、内置浏览器和系统浏览器有何不同?
内置浏览器只能满足最基本的宣传浏览类页面展示体验;
系统浏览器功能更加强大,选用系统浏览器的方式,功能体验能与系统浏览器保持一致,如自定义浏览器地址、书签、历史记录等,通常还支持使用第三方插件或者组件,部分web页面需要依赖三方插件才能使用;
勾选“PC高级选项”,可用系统浏览器方式打开轻应用
注意:若选用内置浏览器的方式,请提前进行功能全量验证,一旦发现问题,请尽快切换为PC默认系统浏览器的方式。
2、We码应用在PC端打开如何做免登?
a.勾选“PC高级选项”,使用本地浏览器打开,免登流程参考上述流程
b.不勾选“PC高级选项”,使用聚合窗口打开,免登流程参考Link
3、轻应用在PC端打开如何做免登?
a.勾选“PC高级选项”,使用本地浏览器打开,免登流程参考上述流程
b.不勾选“PC高级选项”,使用WeLink内置浏览器打开,免登流程参考Link

