- chooseMedia 在pc微信中选择视频时thumbTempFilePath封面图为空?
在pc版微信中打开小程序。使用chooseMedia选择视频时。返回的thumbTempFilePath封面图为空! [图片]
2023-03-16 - 企业微信小程序的typescript 声明文件 现在有了么
拉取群名称
2021-01-26 - 企业微信的小程序消息推送如何推送体验版的消息
请问如何让企业微信的小程序消息推送所推送的消息点击后打开到体验版的小程序,因为有一些联动企业微信消息的功能需要通过企业微信调试但是该功能又不能发布到正式版小程序,只能通过微信小程序体验版进行测试,但是企业微信所接受的推送消息又只能是正式版的微信小程序。请问以上问题如何解决呢?
2021-07-12 - 企微小程序无法通过聊天工具栏进入体验版
官方文档写到: 小程序配置体验版 配置企业微信小程序体验版流程: 该企业微信小程序需已关联到企业 开发者在微信开发者工具生成二维码 开发者使用企业微信扫描二维码打开小程序开发版(需登录关联了该小程序的企业) 点击进入右上角"..."--》点击配置体验版 进入页面选择体验成员后,发送体验邀请 成员将收到小程序通知,通过点击小程序通知卡片即可使用该小程序体验版 我的应用场景是,通过判断员工不同进入小程序入口(聊天工具栏、应用、工作台),展示不同的页面。通过官方文档的体验版配置方式,比如从被通知人的通知卡片点击进入,无法测试从聊天工具栏进入小程序体验版的场景。 我的问题是:有没有办法在企业微信中,通过聊天工具栏这个入口,进入到体验版的小程序? [图片]
2021-07-02 - 小程序与小游戏获取用户信息接口调整,请开发者注意升级。
为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持。从2018年4月30日开始,小程序与小游戏的体验版、开发版调用 wx.getUserInfo 接口,将无法弹出授权询问框,默认调用失败。正式版暂不受影响。开发者可使用以下方式获取或展示用户信息: 一、小程序: 1、使用 button 组件,并将 open-type 指定为 getUserInfo 类型,获取用户基本信息。 详情参考文档: https://developers.weixin.qq.com/miniprogram/dev/component/button.html 2、使用 open-data 展示用户基本信息。 详情参考文档: https://developers.weixin.qq.com/miniprogram/dev/component/open-data.html 二、小游戏: 1、使用用户信息按钮 UserInfoButton。 详情参考文档: https://developers.weixin.qq.com/minigame/dev/document/open-api/user-info/wx.createUserInfoButton.html 2、开放数据域下的展示用户信息。 详细参考文档: https://developers.weixin.qq.com/minigame/dev/document/open-api/data/wx.getUserInfo.html 请各位开发者注意及时调整接口。
2018-04-16 - 小程序登录、用户信息相关接口调整说明
公告更新时间:2021年04月15日考虑到近期开发者对小程序登录、用户信息相关接口调整的相关反馈,为优化开发者调整接口的体验,回收wx.getUserInfo接口可获取用户授权的个人信息能力的截止时间由2021年4月13日调整至2021年4月28日24时。为优化用户的使用体验,平台将进行以下调整: 2021年2月23日起,若小程序已在微信开放平台进行绑定,则通过wx.login接口获取的登录凭证可直接换取unionID2021年4月28日24时后发布的小程序新版本,无法通过wx.getUserInfo与<button open-type="getUserInfo"/>获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),获取加密后的openID与unionID数据的能力不做调整。此前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。新增getUserProfile接口(基础库2.10.4版本开始支持),可获取用户头像、昵称、性别及地区信息,开发者每次通过该接口获取用户个人信息均需用户确认。具体接口文档:《getUserProfile接口文档》由于getUserProfile接口从2.10.4版本基础库开始支持(覆盖微信7.0.9以上版本),考虑到开发者在低版本中有获取用户头像昵称的诉求,对于未支持getUserProfile的情况下,开发者可继续使用getUserInfo能力。开发者可参考getUserProfile接口文档中的示例代码进行适配。请使用了wx.getUserInfo接口或<button open-type="getUserInfo"/>的开发者尽快适配。开发者工具1.05.2103022版本开始支持getUserProfile接口调试,开发者可下载该版本进行改造。 小游戏不受本次调整影响。 一、调整背景很多开发者在打开小程序时就通过组件方式唤起getUserInfo弹窗,如果用户点击拒绝,无法使用小程序,这种做法打断了用户正常使用小程序的流程,同时也不利于小程序获取新用户。 二、调整说明通过wx.login接口获取的登录凭证可直接换取unionID 若小程序已在微信开放平台进行绑定,原wx.login接口获取的登录凭证若需换取unionID需满足以下条件: 如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用2月23日后,开发者调用wx.login获取的登录凭证可以直接换取unionID,无需满足以上条件。 回收wx.getUserInfo接口可获取用户个人信息能力 4月28日24时后发布的新版本小程序,开发者调用wx.getUserInfo或<button open-type="getUserInfo"/>将不再弹出弹窗,直接返回匿名的用户个人信息,获取加密后的openID、unionID数据的能力不做调整。 具体变化如下表: [图片] 即wx.getUserInfo接口的返回参数不变,但开发者获取的userInfo为匿名信息。 [图片] 此外,针对scope.userInfo将做如下调整: 若开发者调用wx.authorize接口请求scope.userInfo授权,用户侧不会触发授权弹框,直接返回授权成功若开发者调用wx.getSetting接口请求用户的授权状态,会直接读取到scope.userInfo为true新增getUserProfile接口 若开发者需要获取用户的个人信息(头像、昵称、性别与地区),可以通过wx.getUserProfile接口进行获取,该接口从基础库2.10.4版本开始支持,该接口只返回用户个人信息,不包含用户身份标识符。该接口中desc属性(声明获取用户个人信息后的用途)后续会展示在弹窗中,请开发者谨慎填写。开发者每次通过该接口获取用户个人信息均需用户确认,请开发者妥善保管用户快速填写的头像昵称,避免重复弹窗。 插件用户信息功能页 插件申请获取用户头像昵称与用户身份标识符仍保留功能页的形式,不作调整。用户在用户信息功能页中授权之后,插件就可以直接调用 wx.login 和 wx.getUserInfo 。 三、最佳实践调整后,开发者如需获取用户身份标识符只需要调用wx.login接口即可。 开发者若需要在界面中展示用户的头像昵称信息,可以通过<open-data>组件进行渲染,该组件无需用户确认,可以在界面中直接展示。 在部分场景(如社交类小程序)中,开发者需要在获取用户的头像昵称信息,可调用wx.getUserProfile接口,开发者每次通过该接口均需用户确认,请开发者妥善处理调用接口的时机,避免过度弹出弹窗骚扰用户。 微信团队 2021年4月15日
2021-04-15 - 03.getUserInfo和getUserProfile 对比
最近动态 wx.getUserProFile() 在2.16.0成功回调有iv、encryptedData,具体看这里https://developers.weixin.qq.com/community/develop/doc/000c04d0490118d8a6ebf675a56c00 调整背景 很多开发者在打开小程序时就通过组件方式唤起 getUserInfo 弹窗,如果用户点击拒绝,无法使用小程序,这种做法打断了用户正常使用小程序的流程,同时也不利于小程序获取新用户。详情可以点击官方调整链接(https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801) 调整前后API功能的对比[图片] [图片] 能力检测 两个前提条件: 1.开发者工具版本不低于 1.05.21030222.基础库版本不低于 2.10.4[图片] 代码片段: https://developers.weixin.qq.com/s/odMs3wmX7Ko3 测试过程 step1: 在开发工具设置清除全部缓存step2: 点击 getUserInfo 按钮,会弹出用户授权,允许后会得到这些信息,见截图[图片] step3: 在终端输入下面代码,也可以获取上面截图数据(今天还不到截止时间,还能获取完整的用户头像和昵称)wx.getUserInfo({ complete: (res) => { console.log(res) } }) step4: 点击 getUserProfile 按钮,会弹出用户授权,允许后会得到这些信息,见截图(只有用户昵称和头像信息)[图片] step5: 通用在终端输入下面代码,获取不到任何信息,符合`若开发者需要获取用户的个人信息(头像、昵称、性别与地区),可以通过wx.getUserProfile接口进行获取,且开发者每次通过该接口获取用户个人信息均需用户确认`wx.getUserProfile({ complete: (res) => { console.log(res) } }) step6: 可以重复点击 getUserInfo 按钮和 getUserProfile 按钮进行测试。功能对比讲解 1.4月13日前未发布的,wx.getUserInfo 能力 wx.getUserInfo(Object object) 会返回 encryptedData、signature、rawData,通过将返回的数据传递给服务器,服务端能解析出用户的身份标识,即 unionId(unionId 获取机制:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html) 【对我们业务来说】 从 wx.getUserInfo 就是要两样东西:unionId和用户信息(头像和昵称)。 但从 2021年2月23日起,可以通过 wx.login 接口获取的登录凭证可直接换取 unionID,可以替代一部分wx.getUserInfo 的功能了。 2.新增 getUserProfile 能力 wx.getUserProfile 能获取到头像和昵称,可以替代 wx.getUserInfo 的另外一部分功能。 3.小结 从这里是不是可以得出,wx.login + wx.getUserProfile 基础可以替代之前的 4月13日前未发布的,wx.getUserInfo 能力。其实不然,如果真是这样的,官方是不是没必要这样搞,咱们接着看。 4.wx.getUserInfo 和 wx.getUserProfile 区别 1.功能上是 wx.getUserInfo 不在返回用户授权的头像昵称,只返回匿名信息,但 wx.getUserProfile 会返回用户授权的头像昵称。2.wx.getUserInfo 授权成功后,当下次调用时,可以直接获取授权成功返回数据,不需要每次都需要用户确认,但 wx.getUserProfile 每次都需要用户确认允许后才能拿到用户信息3.对于业务来说,可以通过 wx.getUserProfile 获取用户信息和昵称后,要存在自己服务器,不能像之前那样每次都通过 wx.getUserInfo 方式获取,否则体验会比较差疑问 1.4月13日后发布的新版本小程序,如果用户未更新到新版本,此时调用 wx.getUserInfo 会不会返回用户授权的头像昵称(如果不确定,业务可能需要兼容处理)2.4月13日后发布的新版本小程序,用户更新到新版本,调用 wx.getUserInfo 返回匿名的头像昵称支持服务器解密吗? 常见问题汇总 1.wx.canIUse 判断getUserProfile结果是false,可以通过直接判断 wx.getUserProfile 即可,类似问题可以查看官方知识库(https://developers.weixin.qq.com/community/develop/doc/000cac40cf0eb8d3e429647c351c09?_at=1614912876047)
2021-04-02 - 公众号开发 调用【上传图文消息内的图片获取URL】接口时,返回 412 错误?
我使用 NodeJS 开发,Express 为框架,在调用微信提供的 【上传图文消息内的图片获取URL】 接口时,axios 报错为 Error: Request failed with status code 412,我不清楚我是哪里做的不对。接口说明必须要用 form表单的形式发送,但是 node 并没有前端的 formData 类,我使用了 form-data 这个 npm 包,通过它来实现此功能,http 请求代理我使用的是 axios,相关代码如下,希望能帮助我解决这个问题, 谢谢! const SWAP_IMAGE_URL = 'https://api.weixin.qq.com/cgi-bin/media/uploadimg'; let form = new FormData(); form.append("media", fs.createReadStream("./hello.jpg")); let token = await getAccessToken(app_id); let config = { params: { access_token: token.message }, headers: form.getHeaders() }; let result = await axios.post(SWAP_IMAGE_URL, form, config); console.log(result); // 我十分确定 URL 和 access_token 都是正常有效的, 请求的头部 content-type 为 multipart/form-data 报错的信息如下: message: Error: Request failed with status code 412 at createError (E:\Desktop\WeChat\Develop\myapp\node_modules\axios\lib\core\createError.js:16:15) at settle (E:\Desktop\WeChat\Develop\myapp\node_modules\axios\lib\core\settle.js:17:12) at IncomingMessage.handleStreamEnd (E:\Desktop\WeChat\Develop\myapp\node_modules\axios\lib\adapters\http.js:236:11) at IncomingMessage.emit (events.js:228:7) at endReadableNT (_stream_readable.js:1185:12) at processTicksAndRejections (internal/process/task_queues.js:81:21) { config: { url: 'https://api.weixin.qq.com/cgi-bin/media/uploadimg', method: 'post', params: [Object], data: [FormData], headers: [Object], transformRequest: [Array], transformResponse: [Array], timeout: 0, adapter: [Function: httpAdapter], xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', maxContentLength: -1, validateStatus: [Function: validateStatus] }, request: ClientRequest { _events: [Object: null prototype], _eventsCount: 6, _maxListeners: undefined, outputData: [], outputSize: 0, writable: true, _last: true, chunkedEncoding: true, shouldKeepAlive: false, useChunkedEncodingByDefault: true, sendDate: false, _removedConnection: false, _removedContLen: false, _removedTE: false, _contentLength: null, _hasBody: true, _trailer: '', finished: true, _headerSent: true, socket: [TLSSocket], connection: [TLSSocket], _header: 'POST /cgi-bin/media/uploadimg?access_token=30_EXkR_41Gro2UV5C6WXucnrGcIadJ_KW75FyneOzXKv_SHwtk7RWv91pvMNIfg_M4GcR0PHZDQitEFeDPrn4t09y_6SP5C2qjm5PNSUTBFTgxyPjtkcdsetGHSlwSABeAAAMUV HTTP/1.1\r\n' + 'Accept: application/json, text/plain, */*\r\n' + 'Content-Type: multipart/form-data; boundary=--------------------------115632283931134332760190\r\n' + 'User-Agent: axios/0.19.2\r\n' + 'Host: api.weixin.qq.com\r\n' + 'Connection: close\r\n' + 'Transfer-Encoding: chunked\r\n' + '\r\n', _onPendingData: [Function: noopPendingOutput], agent: [Agent], socketPath: undefined, method: 'POST', path: '/cgi-bin/media/uploadimg?access_token=30_EXkR_41Gro2UV5C6WXucnrGcIadJ_KW75FyneOzXKv_SHwtk7RWv91pvMNIfg_M4GcR0PHZDQitEFeDPrn4t09y_6SP5C2qjm5PNSUTBFTgxyPjtkcdsetGHSlwSABeAAAMUV', _ended: true, res: [IncomingMessage], aborted: false, timeoutCb: null, upgradeOrConnect: false, parser: null, maxHeadersCount: null, _redirectable: [Writable], [Symbol(kNeedDrain)]: true, [Symbol(isCorked)]: false, [Symbol(kOutHeaders)]: [Object: null prototype] }, response: { [Symbol(isCorked)]: false, [Symbol(kOutHeaders)]: [Object: null prototype] }, response: { status: 412, statusText: 'Precondition Failed', headers: [Object], config: [Object], request: [ClientRequest], data: '' }, isAxiosError: true, toJSON: [Function] } 大概是因为 fs.createReadStream 这里的原因, 但是我想不到更好的办法了, 不清楚怎么办
2020-02-05