云调用:免鉴权获取微信用户信息,简化流程的新方式

2024-07-28
来源:网络整理

云调用获取微信用户信息 问题:云调用能通过auth接口获取用户吗?

A:无需使用云调用。当小程序或公众号发起调用云托管服务时,你的服务请求会自动包含用户信息,包括ID、IP地址、可信来源等。你不再需要通过小程序wx登录后再调用接口进行替换,大大简化了流程。公众号登录也是闭环的,不需要再用代码转换成对应的用户信息。

什么是云通话?

云调用是用户无需认证即可调用微信开放服务接口的能力,是微信云开发/云托管生态的一部分。

在云调用出现之前,正常的微信开放服务接口调用都需要开发者获取密钥信息,并维护自身的有效性和安全性,而获取密钥信息涉及到密钥交互请求,容易导致密钥暴露,导致密钥被盗用,对开发者和微信服务都带来不良影响。

云调用设计为免认证,即免密钥,整个过程不暴露任何信息,开发者无需维护,接口请求的合法性完全由与微信处于同一链路的微信云托管决定。

云开发云调用和云托管云调用

云开发和云调用主要在“云函数”中实现。由于云开发的定位以及“云函数”的开发语言限制,微信也推出了专用的wx--sdk,因此云调用也理所当然的放在了sdk中。开发者只需要如下调用即可访问开放服务接口:

const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) exports.main = async (event, context) => { return await cloud.openapi.security.msgSecCheck-v1({ content:"安全检查测试文本" }) }

但云主机对于开发语言和框架没有任何限制,而微信也并未推出所有语言的SDK,所以云开发的云调用实现方式无法在云主机中实现。

云主机根据自身的特点和优势,推出了完全免认证的云调用解决方案-开放接口服务,请参考文档并进入控制台进行使用。

配置云调用权限

进入控制台-云调用-云调用权限配置,根据业务需求配置接口,新版云调用和老版云调用都需要配置权限。

配置的时候只需要配置接口路径,每行一个接口。配置完成后点击输入框下方的“保存”按钮,配置即可生效。保存之后环境中所有的服务都可以调用这里配置的接口,不需要认证。

例如,如果你想在服务中调用文本安全检测接口

该接口调用地址如下:

https://api.weixin.qq.com/wxa/msg_sec_check?access_token=ACCESS_TOKEN

配置的时候只需要?参数前后的部分,因此配置输入框需要填写如下内容:

/wxa/msg_sec_check

使用限制

微信开发工具小程序_在线开发微信小程序_微信小程序开发可信吗

以下情况无法使用云调用(控制台添加接口不报错,但在实际代码中调用接口会报错“No ”):

通过小程序开通的云托管环境,且公众号未配置“资源复用”,无法调用公众号相关接口; 公众号类型不满足接口权限要求(云调用无法改变公众号类型的接口要求),具体接口权限请查看公众号接口权限说明 部分接口不支持云调用(如部分微信支付服务商接口,详情请查看对应接口文档) 旧版云调用【已进入下线阶段,不建议使用】

2022年7月以后创建的环境不再支持,请使用开放接口服务,这将大大减少您的代码开发工作量。

在云托管服务中,微信后端会定期推送必要的开放接口到服务容器实例中,使用时只需要本地从容器中读取然后包装请求即可调用:

const fs = require('fs') const request = require('request') const token = fs.readFileSync('/.tencentcloudbase/wx/cloudbase_access_token', 'utf-8') return new Promise((resolve, reject) => { request({ method: 'POST', url: `https://api.weixin.qq.com/wxa/msg_sec_check?cloudbase_access_token=${token}`, body: JSON.stringify({ openid: '用户的openid', // 可以从请求的header中直接获取 req.headers['x-wx-openid'] version: 2, scene: 2, content: '安全检测文本' }) },function (error, response) { console.log('接口返回内容', response.body) resolve(JSON.parse(response.body)) }) })

推送间隔10分钟,有效期30分钟;挂载路径为:/./wx/en;同一环境所有容器实例推送相同;

5. 服务商场景下资源复用或使用 服务商场景下资源复用或微信使用

属于微信云托管的“小程序/公众号”,这里的“小程序/公众号”我们称之为资源方。

在资源复用或者服务方第三方平台的场景下,其他经过资源方授权的“小程序/公众号”如果想使用en发起调用,需要进行拼接。

具体方法如下:

在en之前使用'@'作为分隔符,连接资源复用的小程序。

使用连接后的字符串作为新的 en

服务商可以通过环境共享接口将环境共享给小程序

使用公式导出微信云托管环境中的云调用,该属于账号所挂载的主体(小程序/公众号/小游戏/第三方平台),并有其权限。微信云托管环境中的云调用需要先配置使用的API,配置完成后才能用云调用调用API。配置因环境而异。服务商第三方平台模式下,拼接的en和ken效果相同,只能调用小程序授权给服务商的API。同主体小程序、公众号的资源复用模式下,拼接的新en和自身的en效果相同。举例说明 6.概念信息理解 云托管推送的微信“en”和普通的有什么区别?

微信后端推送到服务容器实例,替换所用的系统不一样。

主要有两个区别:

en应用到某个接口之前,需要在云托管平台配置接口白名单;而en不需要配置,可以应用到任意接口。en属于某个云托管环境,只能在所属环境中使用(推荐,虽然现在在其他地方也可以用)。配置也是根据环境而定,不同环境配置不一样,不一样。没有环境限制,拿到手就能用,开放性大打折扣。

因此,在使用微信能力前,需要配置开放接口白名单。进入“微信云主机控制台-云调用-微信配置”,在表单中填写需要调用的接口地址,点击保存按钮。不在白名单中的接口不允许使用微信。

配置是针对环境的,不同环境使用的配置也不同,不管你怎么使用微信,都需要配置这个白名单。

分享