h5应用调用企业微信api过程(获取当前外部联系人userId方法)

该代码示例展示了如何通过OAuth2授权登录,然后调用后台接口获取企业微信的签名,进行wx.config()和wx.agentConfig()注册,以实现企业微信应用的身份认证和API调用,如getCurExternalContact等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调用过程:

  1. 通过OAuth2授权链接进入页面并完成登录
  2. 调用后台获取企业签名接口 并进行 wx.config() 注册
  3. wx.ready() 中继续 企业微信应用身份认证, 调用后台企业微信应用签名接口获取签名,在 wx.agentConfgi() 中注册
  4. wx.invoke() 中调用需要使用的api方法
下面是完整代码,复制直接可用
export default {
	init() {
		postWork('/api/login/getSignature', {
			url: location.href,
			type: 1, // 1:企业 2:应用
			agentId: process.uniEnv.agentId
		}).then(res => {
			if (res.code == 0) {
				wxx.config({
					debug: false,
					beta: true,
					appId: process.uniEnv.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
					timestamp: res.timestamp, // 必填,生成签名的时间戳
					nonceStr: res.nonceStr, // 必填,生成签名的随机串
					signature: res.signature,// 必填,签名,见附录-JS-SDK使用权限签名算法
					jsApiList: ['agentConfig', 'getCurExternalContact'], //必填,传入需要使用的接口名称
					success: function(res) {
					    // 回调
						console.log('config', res)
					},
					fail: function(res) {
					    if(res.errMsg.indexOf('function not exist') > -1){
					        alert('版本过低请升级')
					    }
					},
					
				})
				
				wxx.ready (() => {
					
					this.agentInit()
				})
			}
			
		})
	},
	// 应用身份认证
	agentInit() {
		postWork('/api/login/getSignature', {
			url: location.href,
			type: 2, // 1:企业 2:应用
			agentId: process.uniEnv.agentId
		}).then((res) => {
			wxx.agentConfig({
				corpid: process.uniEnv.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
				agentid: process.uniEnv.agentId, // 必填,企业微信的应用id (e.g. 1000247)
				timestamp: res.timestamp, // 必填,生成签名的时间戳
				nonceStr: res.nonceStr, // 必填,生成签名的随机串
				signature: res.signature,// 必填,签名,见附录-JS-SDK使用权限签名算法
				jsApiList: ['getContext','getCurExternalContact', 'hideMenuItems'], //必填,传入需要使用的接口名称
				success: (res) => {
					// 回调
					console.log('应用身份',res)
					this.getContext()
				},
				fail: function(res) {
					if(res.errMsg.indexOf('function not exist') > -1){
						alert('版本过低请升级')
					}
				}
			});
		})
	},
	// 调用获取H5环境入口的接口
	getContext() {
		wxx.invoke('getContext', {}, (res) => {
			console.log('getContext', res)
		    if(res.err_msg == "getContext:ok"){
		    	// 正常处理业务逻辑
		    	// 获取当前对话框userid
				if (res.entry == 'normal') {
					// 侧边栏进入
					uni.showModal({
						title: '请在下列场景打开应用!',
						content: '外部联系人聊天窗口或详情',
						confirmColor: '#fff',
						showCancel: false,
						success() {
							
						}
					})
				} else {
					this.getUserid()
				}
				
		    	
		        // entry  = res.entry ; 
				// shareTicket = res.shareTicket; //可用于调用getShareInfo接口
		
		    }else {
		        //错误处理
		    }
		});
	},
	// 当前外部联系人userId
	getUserid() {
		wxx.invoke('getCurExternalContact', {}, (res) => {
			console.log('getCurExternalContact11111', res)
	        if(res.err_msg == "getCurExternalContact:ok"){
	            var userId  = res.userId ; //返回当前外部联系人userId
				
				uni.$emit('getExternalId', res)
	        } else {
	            //错误处理
				uni.showModal({
					title: '无权限!',
					content: '请联系管理员!',
					confirmColor: '#fff',
					showCancel: false,
					success() {
						
					}
				})
	        }
	    });
	}
	
}
### 企业微信 H5 获取用户信息方法API 文档与示例代码 在企业微信中,H5 获取用户信息过程通常涉及授权登录和调用相关接口。以下是详细说明以及示例代码。 #### 授权登录流程 企业微信H5 授权登录需要通过以下步骤实现: 1. 引导用户跳转到企业微信的 OAuth2.0 授权页面。 2. 用户同意授权后,企业微信会重定向回指定的回调地址,并附带一个 `code` 参数。 3. 使用该 `code` 请求获取用户的访问令牌(access_token)和用户唯一标识(userid 或 openid)。 4. 使用访问令牌进一步获取用户详细信息。 #### 示例代码 ##### 1. 引导用户跳转到授权页面 ```javascript const redirectUri = encodeURIComponent("https://your-callback-url.com/callback"); // 替换为你的回调地址 const authUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=YOUR_CORP_ID&redirect_uri=${redirectUri}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect`; window.location.href = authUrl; ``` 此处 `snsapi_base` 表示仅获取用户唯一标识(如 userid 或 openid),如果需要获取用户详细信息,则应使用 `snsapi_userinfo`[^1]。 ##### 2. 使用 code 获取 access_token 和用户信息 ```javascript // 假设已经从回调 URL 中获取到 code 参数 const code = "USER_AUTH_CODE"; // 替换为实际的 code 值 const corpId = "YOUR_CORP_ID"; // 替换为企业微信的 CorpID const secret = "YOUR_SECRET"; // 替换为企业微信应用 Secret uni.request({ method: 'GET', url: `https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?corpid=${corpId}&corpsecret=${secret}&code=${code}`, success(res) { console.log(res); const { UserId, OpenId } = res.data; // 根据 scope 不同,可能返回 UserId 或 OpenId // 可以继续请求获取用户详细信息 } }); ``` ##### 3. 获取用户详细信息 如果需要获取用户的详细信息(如姓名、部门等),可以调用以下接口: ```javascript uni.request({ method: 'GET', url: `https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&userid=USER_ID`, success(res) { console.log(res); // res.data 包含用户的详细信息 } }); ``` 其中 `ACCESS_TOKEN` 是通过企业微信的 [获取 access_token 接口](https://work.weixin.qq.com/api/doc/90000/90135/91039) 获取的全局访问令牌,`USER_ID` 是上一步中获取的用户唯一标识。 #### 注意事项 - 如果使用 `snsapi_userinfo`,需要确保应用已获得相应权限。 - 回调地址必须与企业微信后台配置的回调地址一致。 - 在生产环境中,建议对所有请求进行签名验证,以防止伪造请求[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值