前提
1、应用需要通过OAuth2的授权登录方式登录。
企业微信提供了OAuth的授权登录方式,可以让从企业微信终端打开的网页获取成员的身份信息,从而免去登录的环节。
构造OAuth2网页授权链接时:scope必须为snsapi_privateinfo;且agentid必填。
若agentid不填,怎会将scope默认为snsapi_base。
当用户进入网页授权链接后,将弹出授权窗口,用户授权同意后才会返回信息。默认授权为头像、邮箱、手机号。
2、该应用需从企业微信终端(PC端移动端皆可)打开
因为OAuth2网页授权链接只能在企业微信终端打开
获取手机号
1、获取用户身份
通过OAuth2的授权登录后,会跳转至redirect_uri?code=CODE&state=STATE,我们就能从当前的URL上获取code,可用如下代码获取
//search 函数用来获取当前URL的参数
const search = () => {
const params: any = {}
const href = window.location.href
.replace(/^(.*?)(#.*)?$/, '$1')
.replace(/^.*?(\?(.*))?$/, '$2')
.split('&')
.forEach(ps =>
ps.replace(/(.*?)=(.*)/g, ($0: string, $1: string, $2: string) => {
return (params[$1.trim()] = $2.trim())
})
)
return params
}
const { code } = search() || {}
获取到code后,可通过 get请求以下接口获取到当前登录人userId以及获取敏感数据票据的user_ticket。https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
注意:code只能使用一次,需要定义好前端还是后端使用;
access_token:通过corpid(企业ID)、corpsecret(应用的凭证密钥)获得,可多次使用,但是会有过期时间。详情见获取access_token - 接口文档 - 企业微信开发者中心;
获取用户身份接口详情见获取访问用户身份 - 接口文档 - 企业微信开发者中心
2、获取用户手机号等敏感信息
通过post请求以下接口,可获取用户的手机号、邮箱l、性别等敏感信息。https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail?access_token=ACCESS_TOKEN
//请求体
{
"user_ticket": "USER_TICKET"
}
user_ticket为上一步获取用户身份 的get请求的返回值。