- App拉起小程序,可以拉起任意第三方小程序吗?
App可以拉起任意第三方小程序吗?如果可以,怎么获取第三方小程序的原始id呢?比如,我要从自己的app拉起美团的小程序,我怎么获取美团小程序的原始id??
2020-11-09 - Cannot read property '__wxWebviewId__
HONOR KNT-AL10 Android 6.0 目前不知如何复现,小程序正常使用情况下,有机率发生如下错误: [代码]appServiceSDKScriptError TypeError: Cannot read property '__wxWebviewId__' of undefined; at wx.createSelectorQuery [代码][代码] [代码][代码]X5JsCore:48:14266 Function.i[代码][代码] [代码][代码]X5JsCore:43:7757 Object.createSelectorQuery[代码][代码] [代码][代码]X5JsCore:3031:842 Function.e[代码][代码] [代码][代码]X5JsCore:42:13773 [代码][代码] [代码][代码]X5JsCore:47:7186[代码]疑似发生在内核 [代码]function[代码] [代码](e, t, n) {[代码][代码] [代码][代码]Object.defineProperty(t, [代码][代码]"__esModule"[代码][代码], {[代码][代码] [代码][代码]value: !0[代码][代码] [代码][代码]}), t.createSelectorQuery = void 0;[代码][代码] [代码][代码]var[代码] [代码]r = n(163),[代码][代码] [代码][代码]o = [代码][代码]function[代码] [代码](e) {[代码][代码] [代码][代码]return[代码] [代码]e && e.__esModule ? e : {[代码][代码] [代码][代码]default[代码][代码]: e[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}(r),[代码][代码] [代码][代码]i = [代码][代码]function[代码] [代码](e) {[代码][代码] [代码][代码]var[代码] [代码]t = [代码][代码]null[代码][代码];[代码][代码] [代码][代码]if[代码] [代码](e && e.page) t = e.page.__wxWebviewId__;[代码][代码] [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]var[代码] [代码]n = getCurrentPages();[代码][代码] [代码][代码]t = n[n.length - 1].__wxWebviewId__[代码][代码] [代码][代码]}[代码][代码] [代码][代码]return[代码] [代码]new[代码] [代码]o.[代码][代码]default[代码][代码](t)[代码][代码] [代码][代码]};[代码][代码] [代码][代码]t.createSelectorQuery = i[代码][代码] [代码][代码]}[代码]请问什麽情况下会发生,要如何避免这个错误,谢谢
2018-01-12 - wx-open-launch-app 标签点击确定后报错 launch:fail?
使用wx-open-launch-app后, 在Andriod和IOS 上都可以正常显示按钮标签,点击标签弹出弹框后报错 launch:fail config验证已经通过,包名,appid,也已经确认是正确的 以下这些都已经确认过多次 获得此设置入口的权限,需同时满足如下条件: 服务号已认证 开放平台账号已认证 服务号与开放平台账号同主体 绑定域名和移动应用 绑定域名的要求: 域名须为当前服务号的 JS 安全域名 域名只能同时绑定一个移动应用,因此须确保域名未被其他移动应用绑定 绑定移动应用的要求 只能绑定同一微信开放平台账号下审核通过的移动应用 求解
2020-11-24 - 微信小程序webview支付突然用不了了
在小程序webview组件里面内嵌h5页面,用的是微信公众号支付,之前小程序上线的时候测试过,从小程序进入h5页面是可以支付的,但从昨天凌晨发现,调不起支付了,h5页面单独支付都是可以的,而且h5的页面和接口都是https的,小程序也是昨天晚上才更新的第二版,请问这个是为什么呢? 补充一下:iphonex打开调试(体验版,连的正式数据,他是开发者),就可以支付,问题是所有的都是安全域名啊,这到底是为什么呢
2019-03-21 - APP-SERVICE-SDK::失败
运维中心错误查询中出现,开发与调试并没有出现这种情况,请问一下这是咋回事
2019-08-26 - sentry频繁收到qy-appservice-sdk.js内部invokeMethod函数报错
企业微信小程序,Sentry错误收集系统从2021.4.2号开始,频繁收到“TypeError: Cannot read property 'invokeMethod' of undefined”的错误(涉及多个小程序,其中一个小程序近二十天已经收到三万次报错) 报错位置为qy-appservice-sdk.js内部代码,每次报错前都会调用getBaseMethods函数。 其他信息如下: 所有的错误100%来自安卓手机系统(Android 8/9/10 均有)绝大部分(96%)报错的场景值为1168没有客服反馈客户投诉,说明该错误暂时并未导致程序不可用
2021-04-20 - 小程序webview调用公众号支付?
小程序webview可以调用公众号的微信支付吗?
2021-03-02 - 微信小程序人脸识别能调用第三方接口吗?或者是腾讯云的?还是只能使用原生的API?
最近公司有个需求,给小程序添加人脸识别功能。看了文档并使用的微信原生的API,返回的只有支持指纹识别,没有人脸识别。微信小程序人脸识别能调用第三方接口吗?或者是腾讯云的?还是只能使用原生的API?
2020-09-30 - 微信人脸核身接口能力
一、能力背景 近年来,国家在医疗挂号、APP注册、快递收寄、客运、运营商等多领域规定,需要用户实名才可办理业务,预计后续也会有越来越多的此类法规。因此,微信参照公安部“互联网+”可信身份认证服务平台标准,依托腾讯公司及微信的生物识别技术,建立微信“实名实人信息校验能力” ,即通过人脸识别+权威源比对,校验用户实名信息和本人操作(简称微信人脸核身)。 目前接口限定主体及行业类目开放公测,提供给资质符合要求的业务方,在合适的业务场景内使用。目前仅支持持二代身份证的大陆居民。 由于人脸核身功能涉及到用户的敏感、隐私信息,因此调用此接口的小程序,需要满足一定的条件。即:小程序的主体以及类目,需要在限定的类目范围内,且与小程序的业务场景一致。开展的业务也需要是国家相关法规、政策规定的需要“实名办理”的相关业务(其他未在范围内的业务,则暂不支持)。 以下为接口接入及开发的详细内容。如开发中遇到任何疑问,可以点击此处通过社区反馈,将有工作人员跟进回复。 文档第四部分【再次获取核验结果api】,有助于提高业务方安全性,请务必接入! 现阶段微信人脸核验能力,针对小程序,开放的主体类目范围包含: 小程序一级类目 小程序二级类目 小程序三级类目 使用人脸核验接口所需资质 物流服务 收件/派件 / 《快递业务经营许可证》 物流服务 货物运输 / 《道路运输经营许可证》(经营范围需含网络货运) 教育 学历教育(学校) / (2选1):1、公立学校:由教育行政部门出具的审批设立证明 或 《事业单位法人证书》;2、私立学校:《民办学校办学许可证》与《民办非企业单位登记证书》 医疗 公立医疗机构 / 《医疗机构执业许可证》与《事业单位法人证书》 医疗 互联网医院 / 仅支持公立医疗机构互联网医院(2选1):1、卫生健康部门的《设置医疗机构批准书》;2、 《医疗机构执业许可证》(范围均需含“互联网诊疗”或名称含“互联网医院”等相关内容 医疗服务 三级私立医疗机构 / 仅支持三级以上私立医疗机构,提供《医疗机构执业许可证》、《营业执照》及《医院等级证书》 政务民生 所有二级类目 / 仅支持政府/事业单位,提供《组织机构代码证》或《统一社会信用代码证》。 金融业 银行 / (2选1):1、《金融许可证》; 2、《金融机构许可证》。 金融业 信托 / (2选1):1、《金融许可证》; 2、《金融机构许可证》。 金融业 公募基金 / (4选1):1、《经营证券期货业务许可证》且业务范围必须包含“基金”;2、《基金托管业务许可证》; 3、《基金销售业务资格证书》;4、《基金管理资格证书》。 金融业 证券/期货 / 《经营证券期货业务许可证》 金融业 保险 / (8选1):1、《保险公司法人许可证》;2、《经营保险业务许可证》;3、《保险营销服务许可证》;4、《保险中介许可证》;5、《经营保险经纪业务许可证》;6、《经营保险公估业务许可证》或《经营保险公估业务备案》;7、《经营保险资产管理业务许可证》 ;8、《保险兼业代理业务许可证》。 金融业 消费金融 / 银监会核准开业的审批文件与《金融许可证》与《营业执照》 金融业 汽车金融 / 仅支持汽车金融主体,同时提供:1、《营业执照》(公司名称包含“汽车金融” ;营业范围包含“汽车金融”业务);2、《金融许可证》或银保监会及其派出机构颁发的开业核准批复文件 交通服务 网约车 快车/专车/其他网约车 (自营性网约车)提供《网络预约出租汽车经营许可证》。(网约车平台)提供与网约车公司的合作协议以及合作网约车公司的《网络预约出租汽车经营许可证》。 交通服务 航空 / (航司)提供《公共航空运输企业经营许可证》。(机场)提供《民用机场使用许可证》或《运输机场使用许可证》。 交通服务 公交/地铁 / 提供公交/地铁/交通卡公司《营业执照》 交通服务 水运 / (船企)提供《水路运输许可证》。(港口)提供《港口经营许可证》 交通服务 骑车 / 仅支持共享单车,提供共享单车公司《营业执照》 交通服务 火车/高铁/动车 / 仅支持铁路局/公司官方,提供铁路局/公司《营业执照》 交通服务 长途汽车 / (2选1):1、《道路运输经营许可证》(经营范围需含客运);2、官方指定联网售票平台(授权或协议或公开可查询文件)。 交通服务 租车 / 运营公司提供《备案证明》与对应公司《营业执照》,且营业执照中包含汽车租赁业务 交通服务 高速服务 / 仅支持ETC发行业务,(2选1):1、事业单位主体,需提供《事业单位法人证书》;2、官方指定的发行单位(一发单位),需提供“官方授权或协议,或公开可查询的文件”; 生活服务 生活缴费 / (供电类)提供《电力业务许可证》与《营业执照》,且《营业执照》且经营范围含供电。(燃气类)提供《燃气经营许可证》与《营业执照》,且《营业执照》且经营范围含供气。(供水类)提供《卫生许可证》与《营业执照》。(供热类)提供《供热经营许可证》与《营业执照》,且《营业执照》且经营范围含供热。 IT科技 基础电信运营商 / (2选1):1、基础电信运营商:提供《基础电信业务经营许可证》;2、运营商分/子公司:提供营业执照(含相关业务范围)。 IT科技 转售移动通信 / 仅支持虚拟运营商,提供《增值电信业务许可证》(业务种类需含通过转售方式提供移动通信业务) 旅游服务 住宿服务 / 仅支持酒店,提供《酒店业特种行业经营许可证》 商业服务 公证 / 仅支持公证处,提供《公证处执业许可证》或《事业单位法人证书》 社交 直播 / (2选1):1、《信息网络传播视听节目许可证》;2、《网络文化经营许可证》(经营范围含网络表演)。 如对以上类目或资质有疑问,可点击参考小程序“非个人主体开放的服务类目”,详细了解小程序开放的服务类目及对应资质。 二、准备接入 (请在小程序发布后,再提交人脸核身接口申请) 满足第一节中描述的类目和主体的小程序,可申请微信人脸核验接口。目前微信人脸核身接口已改为线上自助申请方式,需按照如下图例指引,进行接口申请: 第一步:请通过mp.weixin.qq.com登录小程序账号在后台“功能-人脸核身”的路径,点击开通按钮—— [图片] 第二步:仔细查阅《人脸识别身份信息验证服务条款》后,点击“同意并下一步”—— [图片] 第三步:请正确填写服务信息,并上传该小程序类目下所要求的资质—— [图片] 第四步:请按照业务实际需求填写使用人脸接口的场景和用途—— [图片] 第五步:请完善测试信息和联系人—— [图片] 第六步:提交后请耐心等待1-3个工作日的审核期,审核结果将以站内信通知—— 如申请期间遇到问题,可联系腾讯工作邮箱 wx_city@tencent.com,将会有相关工作人员进一步指引。 三、接口文档: (一)接口描述 名称: wx.startFacialRecognitionVerify(OBJECT) 功能:请求进行基于生物识别的人脸核身 验证方式:在线验证 兼容版本: 一闪:android 微信7.0.22以上版本, iOS 微信7.0.18以上版本 建议在微信官网升级至最新版本 (二)参数说明 1、OBJECT参数说明: 参数 类型 必填 说明 name String 是 姓名 idCardNumber String 是 身份证号码 success Function 否 调用成功回调 fail Function 否 调用失败回调 complete Function 是 调用完成回调(成功或失败都会回调) 2、CALLBACK返回参数 参数 类型 说明 errMsg String 错误信息 errCode Number 错误码 verifyResult String 本次认证结果凭据,第三方可以选择根据这个凭据获取相关信息 注 1:传递用户姓名和身份证有两种方式 业务方没有用户实名信息,用户需要在前端填写身份证和姓名,那么前端直接通过jsapi 调用传递 name 和 idCardNumber。 业务方已经有用户实名信息,后台通过微信提供的 api(详情见文档后面“上传姓名身份证后台 api”)上传用户身份证姓名和身份证,api 返回 user_id_key 作为凭证传给前端,前端再调用 jsapi,用户姓名、身份证信息不需要经过前端,参数只需要传递 userIdKey。Tips:使用该功能需要小程序基础库版本号>=1.9.3。 3、回调结果说明 回调结果请参考以下释义: [图片] [图片] [图片] 4、示例代码 [图片] [图片] (三)上传用户姓名身份证的后台api 1、API说明 1.1说明 业务方上传用户姓名和身份证,获取用户凭证,把凭证给到前端通过 jsapi 调用。 Tips :使用该功能需要小程序基础库版本号>=1.9.3。 1.2请求URL https://api.weixin.qq.com/cityservice/face/identify/getuseridkey?access_token={ac cess_token} 1.3请求方式 POST 2、请求数据格式 [代码]Json { "name" : “张三”, "id_card_number" : "452122xxxxxxx43215" } [代码] 请求示例 [代码]#!/bin/bash TOKEN='xxxxxxxxxxxx' URL='https://api.weixin.qq.com/cityservice/face/identify/getuseridkey' JSON='{ "name": "张三", "id_card_number": "452344xxxxxxxxxxxxx234"}' curl "${URL}?access_token=${TOKEN}" -d "${JSON}" [代码] 参数说明 json 字段 中文显示 是否必传 name 姓名 是 id_card_number 身份证号码 是 out_seq_no 业务方唯一流水号 否 3、返回数据 参数 类 型 说明 errcode int 错误码 errmsg string 错误信息 user_id_key string 用于后台交互表示用户姓名、身份证的凭证 expires_in uint32 user_id_key 有效期,过期需重新获取 [代码]{ "errcode" : 0, "errmsg" : "ok", "user_id_key" : "id_key_xxxx", "expires_in": 3600 } [代码] 4、后台消息推送 如果业务方传入out_seq_no,核身完成后会通过消息推送回调给业务方的服务器,如果回调业务方失败,会在5s尽力推送,超过5s不再推送。 参数说明 参数 类 型 说明 ToUserName string 小程序原始ID FromUserName string 事件消息openid CreateTime uint32 消息推送时间 MsgType string 消息类型 Event string 事件类型 openid string 核身用户的openid out_seq_no string 业务方唯一流水号 verify_result string 核身返回的加密key(凭据) 返回示例 [代码]{ "ToUserName": "gh_81fxxxxxxxx", "FromUserName": "oRRn15NUibBxxxxxxxxx", "CreateTime": 1703657835, "MsgType": "event", "Event": "face_identify", "openid": "oRRn15NUibBxxxxxxxxx", "out_seq_no": "test1234", "verify_result": "XXIzTtMqCxwOaawoE91-VNGAC3v1j9MP-5fZJxv0fYT4aGezzvYlUb-n6RWQa7XeJpQo0teKj8mGE4ZcRe1JI3GqzADBYORBu613rKjKAFfEXTXw_bu1bs7MnmPOpguS" } [代码] 四、再次获取核验结果api 此接口是前端完成人脸核身后,基于前端返回的凭据,通过后台api再次进行核验结果和身份信息的校验,有助于提高安全性,请务必接入! 前端获取结果不可信,存在被篡改的风险,为了保障请求结果安全性,请务必对identify_ret、id_card_number_md5、name_utf8_md5字段进行校验! (一)API说明 1、说明 人脸核身之后,开发者可以根据jsapi返回的verify_result向后台拉取当次认证的结果信息。 2、请求URL https://api.weixin.qq.com/cityservice/face/identify/getinfo?access_token={access_token} 3、请求方式 POST 4、请求格式 json (二)请求数据说明 1、请求 参数 类型 是否必填 描述 verify_result String 是 jsapi返回的加密key(凭据) 2、数据返回 HTTP 头如下 Date: Mon, 06 Feb 2017 08:12:58 GMT Content-Type: application/json; encoding=utf-8 Content-Length: 85 Connection: close json示例 [代码]{ "errcode" : 0, [代码] [代码]"errmsg" : "ok", "identify_ret" : 0, "identify_time" : 1486350357 "validate_data": "8593" [代码] [图片] (三)返回参数说明 1、返回参数 注:errcode和identify_ret同时为0,代表本次认证成功。 参数 类型 描述 errcode int 错误码, 0表示本次api调用成功 errmsg string 本次api调用的错误信息 identify_ret int 人脸核身最终认证结果 identify_time uint32 认证时间 validate_data string 用户读的数字(如是读数字) openid string 用户openid user_id_key string 用于后台交互表示用户姓名、身份证的凭证 finish_time uint32 认证结束时间 id_card_number_md5 string 身份证号的md5(最后一位X为大写) name_utf8_md5 string 姓名MD5 2、错误码对应信息 errcode 备注 84001 非法identity_id 84002 用户信息过期 84003 用户信息不存在 五、小程序辅助接口:检查设备是否支持人脸检测 1、接口名称 接 口 :wx.checkIsSupportFacialRecognition(OBJECT) 功能:检查设备是否支持人脸检测 2、接口说明和使用 小程序调用该接口,可以检测当前手机设备是否具备支持人脸检测的能力,可与以上接口分开使用,为了用户体验,建议调用后对手机设备不支持的用户做对应功能处理。 3、接口说明和使用 01 OBJECT 参数说明: 参数 类型 是否必填 描述 success Function 否 调用成功回调 fail Function 否 调用失败回调 complete Function 是 调用完成回调(成功或失败都会回调) checkAliveType Number 否 人脸核验的交互方式,默认读数字(见表 2) 表 2:checkAliveType 的值和对应的解释: 参数 解释 2 先检查是否可以屏幕闪烁,不可以则自动为读数字 02 CALLBACK 返回参数 参数 类型 说明 errMsg Boolean 错误信息 errCode Number 错误码 03 回调结果说明 回调类型 ErrCode 说明 sucess 0 支持人脸采集 fail 10001 不支持人脸采集:设备没有前置摄像头 fail 10002 不支持人脸采集:没有下载到必要模型 fail 10003 不支持人脸采集:后台控制不支持 回调结果说明仅对Android生效,iOS不返回errcode。 04 示例代码 [图片] 六、安全性说明 为保障业务可用性以及安全性,请详细研读微信人脸核身接口相关基础说明及安全说明文档:https://docs.qq.com/doc/DTFB0YWFIdGV6amly 备注:如开发中遇到任何疑问,可以点击此处通过社区反馈,将有工作人员跟进回复。 七、案例展示及补充说明 安徽医科大学第二附属医院,微信人脸核验登录: 安徽医科大学第二附属医院,是三级甲等综合医院。其小程序为用户提供挂号、门诊费用、住院费用、检查报告、体检等医疗服务,同时也提供停车、餐饮等便民服务,是医疗小程序中完整的案例。 小程序使用了微信人脸核验能力作为登录的核验。满足医院管理要求,也满足国家对于实名就医的管理规则。 案例实现的截图效果如下: [图片] [图片] 针对近期少数小程序方面反馈的两类问题,也在本课程进行补充说明。 1、本接口的开放范围,即:可支持的主体类目,是否可以扩大? 说明:基于本接口整体使用范围的评估、相关法规的参考、监管策略的理解执行等,暂时未立刻进行扩大开放范围的工作。 但我们会持续基于不同行业的法规、政策及监管要求等,逐一进行研究考量,以便确认如何扩大开放范围。 2、小程序如果涉及用户本人的生物特征采集,(如本人人脸照片、人脸视频),或涉及采集用户本人生物特征信息并开展人脸核验功能,则存在被驳回的情况? 说明:近两年“人脸识别”技术在社会上掀起了热潮。人脸识别虽然作为摆脱“中间媒介”或“承载载体”的一种直接技术手段,解决了部分政务、交通、医疗、零售等证明“操作者是本人”的问题,但也因此,引入了新的更大的安全风险。 一是,虚假安全风险。 身份认证领域的安全三因素包括“我知道什么”、“我拥有什么”、“我的特征是什么”,通用的安全做法,是要双因素认证(2FA),人脸识别技术如仅凭“我的特征是什么”这一个因素,则容易被攻破或利用。表象给用户以安全的感觉,但实际并不能达到安全效果。 二是,信息泄漏的风险。 越来越多的组织或个人,在并非必需用户敏感信息、生物特征的情况下,采集并存储此类信息。在信息加密、传输、存储过程中,容易暴漏更多的网络节点,使得此类信息有更大的风险被网络黑客拦截、窃听、窃取,或直接被脱库。 三是,消除风险的难度大。 以往基于“中间媒介”或“承载载体”的方式,如出现丢失、被冒用、恶意盗用等风险,可以通过挂失、更换、使用新载体或新媒介等方式,快速排除一定的风险。C端主动,B端主动,都能解决一部分问题。但人脸识别做为更直接的方式,一旦出现冒用、盗用,受害者将面临更大的财产及人生安全风险,且C端用户更多时候无法主动消除风险。 基于以上问题风险,加之国家出台《网络安全法》、《用户隐私保护条例》等法律法规标准,网信办、公安部、工信部及市场监管总局等四部委发起的app获取隐私整治,结合平台安全、用户敏感隐私信息保护要求及监管,针对部分暂无相关法规或要求,需要采集或生物认证方式进行身份核验的,或以“追热点”或“尝鲜”为目的,采集用户生物特征或进行身份核验的,进行严格审核,必要时不予以支持。
06-26 - 小程序image组件中二维码在wx.previewImage中无法识别
image组件中二维码在wx.previewImage中无法长按识别
2020-12-02 - 小程序登录、用户信息相关接口调整说明
公告更新时间: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 - 微信开放平台:第三方平台小程序服务器域名域名和业务域名配置上限问题
小程序服务器域名和业务域名配置数量上限为20个,能否设置一级域名,其对应的二级域名能否生效?
2019-06-26 - 淘口令被封,能不能用复制淘宝商品链接的方式做淘宝、天猫商品的引流?
您好: 我之前开发的淘宝导流小程序,因为使用了淘口令被你们封了,感觉很不爽。 现在我要问的是,我用webview的方式打开自己的网页,复制淘宝商品、优惠券的链接,这样应该不会被封吧? 速回速回,着急赚钱。 @审核的员工 看清楚一点啊,我这是淘宝链接了,不是淘口令了!! [图片] [图片] [图片]
2019-10-28 - 开放平台设置网页跳转移动应用的安全域名,可以设置多个吗?(目前只能设置一个)
因公司正式环境管理严格,总不可能在正式环境测试。 更新一次要签字一次,然后找运维才能更。 希望官方可以让配置两个,一个测试环境 一个生产环境的
2020-07-02 - ios 7.0.20 canvas.createImage挂了,太难了?
线上项目涉及到这块的都挂了,这个bug影响太大了。麻烦官方尽快修复啊!!!
2020-12-30 - iOS升级到最新7.0.20版本后,canvas使用createImage无法加载图片?
iOS升级到最新7.0.20版本后,canvas使用createImage无法加载图片,无论本地图片还是网络图,均error
2020-12-29 - 小程序如何配置业务域名
配置业务域名首先是企业主体才有的,对于个人主体小程序不存在这个配置功能 [图片] 本文背景近期本人在做小程序内嵌入网页的一些工作,会把部分工作中的一些节点问题,整理出来 本文主要讲述如何配置业务域名? 本文内容本文主要讲述如何配置业务域名? 第一步:登录小程序后台 [图片] 第二步:左侧菜单找到开发,业务域名,点击开始配置按钮 [图片] 第三步:下载校验文件 请下载校验文件,并将文件放置在域名根目录下,例如wx.qq.com,并确保可以访问该文件。如配置中遇到问题,请查看具体指引。 [图片] 第四步:配置业务域名 本文总结 本文主要通过描述了如何配置业务域名,只有配置了业务域名,小程序内才可以通过webview嵌入H5页面
2020-12-21 - 小程序使用样式的时候要不要加-webkit-前缀?
小程序使用样式的时候要不要加-webkit-前缀?
2019-06-04 - 干货,小程序清除冗余css样式,清除多余css样式PHP版
写在前面的一些废话 最近微信小程序项目快要上线了,在开发工具的Audits里看了下,说是建议清除多余css样式,搜了下看没有相关的工具,无奈只能自己动手丰衣足食了。 项目快一个月了,上个月写css的妹子离职了,挺想她的,她喜欢粉色,并且我和她经常一起喝奶茶,真的很想她!不多说了先上代码。 PS:此处省略一千万字...... /* * 小程序清除冗余css样式 * by 尧曳网络 2020-06-29 * 步骤: * 1、创建一个php文件,复制以下代码进去保存,更改变量$wxmlFolder为你的小程序pages目录路径,$publicCssPath为公共css路径 * 2、确认wxml文件中的class、id属性=号两边是否有多余空格或是否单或双引号,视情况更改$pattern正则匹配变量值(可在工具搜索看看有哪些class或id不同的形式) * 3、建议在替换前确认所有已获得的css和id名称是否正确 * 4、提取结果只匹配“#”、“.”和":"伪类的样式,公共和引入的样式需要手动提取,最后将提取出的css保存为另外一个文件进行测试即可 */ $wxmlFolder = '******/pages/'; $publicCssPath = '******/app.wxss'; //提取样式 function extractCss($content, $pattern) { $css=""; preg_match_all($pattern, $content, $matches); foreach ($matches[1] as $item) { preg_match_all("/'(.+?)'/is", $item, $Vmatches); foreach ($Vmatches[1] as $Vitem) { $css.=$Vitem." "; } preg_match_all("/\"(.+?)\"/is", $item, $Vmatches); foreach ($Vmatches[1] as $Vitem) { $css.=$Vitem." "; } $item = preg_replace('/{{(.+?)}}/is', '', $item); $css.=$item." "; } return $css; } /*获得所有样式文件*/ function getAllWxmlFile($folder) { $files = scandir($folder); foreach ($files as $file) { if ($file != '.' && $file != '..') { if (is_dir($folder . '/' . $file)) { getAllWxmlFile($folder . '/' . $file); } else { $GLOBALS["wxmlList"][] = $folder . '/' .$file; } } } } /*获得所有样式*/ function getAllCss($folder) { global $wxmlList; global $wxml; global $css; getAllWxmlFile($folder); foreach ($wxmlList as $file) { if (strpos($file, '.wxml') !== false) { $wxml[]=$file; } } //取消注释查看文件列表 //echo json_encode($wxml); //die(); foreach ($wxml as $path) { $fs = fopen($path, "r"); $content = fread($fs, filesize($path)); fclose($fs); //class="" 双引号 $css[] = extractCss($content, '/class="(.+?)"/is'); //class='' 单引号 $css[] = extractCss($content, '/class=\'(.+?)\'/is'); //id="" 双引号 $css[] = extractCss($content, '/id="(.+?)"/is'); //id='' 单引号 $css[] = extractCss($content, '/id=\'(.+?)\'/is'); } $cssRes=""; foreach ($css as $item) { $cssRes.=$item." "; } $allCss=array(); $cssRes=explode(" ", $cssRes); foreach ($cssRes as $v) { $v = preg_replace('/\'/is', '', $v); $v = preg_replace('/{{(.+?)\?/is', '', $v); $v = preg_replace('/}}/is', '', $v); $v = preg_replace('/:/is', '', $v); if (!empty($v)) { if (!in_array($v, $allCss)) { $allCss[]=$v; } } } //取消注释查看css列表 //echo json_encode($allCss); //die(); return $allCss; } /*获得所有样式*/ function showAllCss($res) { $fs = fopen($GLOBALS["publicCssPath"], "r"); $publicCss = fread($fs, filesize($GLOBALS["publicCssPath"])); fclose($fs); //替换注释 $publicCss = preg_replace('/\/\*(.+?)\*\//is', '', $publicCss); //查找css并提取出来 $allCss = array(); foreach ($res as $item) { //":" $patternCss="/(\. *".$item.":(.+?) *{(.+?)})/is"; preg_match_all($patternCss, $publicCss, $matches); $_id=implode($matches[1]); if (!empty($_id)) { $allCss[]=$_id; } //"." $patternCss="/(\. *".$item." *{(.+?)})/is"; preg_match_all($patternCss, $publicCss, $matches); $_css=implode($matches[1]); if (!empty($_css)) { $allCss[]=$_css; } //"#" $patternCss="/(\# *".$item." *{(.+?)})/is"; preg_match_all($patternCss, $publicCss, $matches); $_id=implode($matches[1]); if (!empty($_id)) { $allCss[]=$_id; } } $allCssContentRes=array(); foreach ($allCss as $v) { $allCssContentRes[]=$v; } foreach ($allCssContentRes as $k=>$v) { $allCssContentRes[$k] = preg_replace('/\r\n/is', '', $v); $allCssContentRes[$k] = preg_replace('/\t/is', '', $allCssContentRes[$k]); } return $allCssContentRes; } $res = getAllCss($wxmlFolder); $allCss = showAllCss($res); echo implode($allCss); 至此,运行后看上去似乎已经输出了一些样式,将结果另存为文件,然后把原来公共样式文件里的一些公共样式需要手动加入一下就可以了。 说实话,1999年编程至今孤身一人,当年看着马云、同程、携程、京东等崛起,甚至错过了炒玉米、小游戏等,落魄潦倒不堪至今,也就只能写点代码慰藉心灵了。 真想她,她写的css是那么的优雅,我认为她就是编程界的一股清流,可现在她从北京去了杭州,不知道还能不能和她联系上,也许……。 未完待续-----
2020-06-30 - wx.getSystemInfoSync开发者工具和真机获取到的windowHeight不一致。
华为P20在开发者工具中,获取到的windowHeight是626,真机上获取到的高度是748,因此导致真机上出现了本不应该出现的滚动条。 下图所示为开发者工具 [图片] 下图所示为真机 [图片] 代码片段 const res = await wx.getSystemInfoSync(); console.log(res)
2020-05-05 - ios下拉系统菜单会结束掉正在播放的音频
- 当前 Bug 的表现(可附上截图) ios上拉系统菜单会结束掉正在播放的音频,不会触发音频的监听函数,也不会触发onhide和onshow。 [图片] - 预期表现 - 复现路径 - 提供一个最简复现 Demo
2019-05-16 - getsetting调用频率问题
wx.getSetting这个api是不是有调用频率限制? 如果用户拒绝之后, 继续多次调用会出现"authorize:fail authorize no response", 并且wx.getSetting无法返回授权状态
2018-09-27 - 如何修改微信小程序头部导航栏右上角三个点?
[图片]
2020-04-15 - 【萌新求助】FileSystemManager.saveFile的filePath参数怎样设定?
使用wx.downloadFile之后调用wx.saveFile下载下来的文件在真机上会储存在tencent\MicroMsg\wxafiles\里面,但是里面的文件都是没有后缀的,用户无法正确判断是什么文件类型去打开 我看FileSystemManager.saveFile里是可以设置存储路径filePath的,但是这个路径究竟要则呢么设置呢? 我查到的都是设置成wx.env.USER_DATA_PATH,但是这种会把文件存储到tencent\MicroMsg\wxanewfiles\XXXXXX\里面,但是这个XXXXXXXX是自动生成的一个文件夹,我无法确定这个究竟是什么名字,所以我就无法告诉用户这个文件究竟下载到了什么地方 而如果我修改wx.env.USER_DATA_PATH改获取到的wxfile://user变成别的东西的话就会报错,例如把usr变成store(wxfile://store这种),就会报错,而这种修改在pc上是可以的(http://usr改为http://store这种,就会在store文件夹里保存文件) 请各位大神帮帮忙,这个filePath参数的路径究竟是什么东西,究竟怎么改才能不要tencent\MicroMsg\wxanewfiles\XXXXXX\里面这个随机的文件夹 FileSystemManager.saveFile({ tempFilePath: e.tempFilePath, filePath: wx.env.USER_DATA_PATH + "/" + filetype, success(res) { console.log(res) wx.showToast({ title: '保存成功' }) }, fail(res){ console.log(res) } }) filetype是带后缀的文件名(例如text.docx),filePath参数为“wxfile://usr/text.docx”,保存下来的就是wxanewfiles\5f1d71fa9ebd0b65bc0a16c40e8f7226\text.docx 请各位大神帮帮忙,怎么做才能不要5f1d71fa9ebd0b65bc0a16c40e8f7226这个自动生成的字符串,这个我也拿不到....
2020-09-20 - MediaContainer 的api 是否能拼接音频?注意是拼接,不是重叠。
const c = wx.createMediaContainer() c.extractDataSource({ source: this.url, // 第一个录音 success: (t) => { console.log(1, t) c.addTrack(t.tracks[0]) c.extractDataSource({ source: this.url2, // 第二个录音 success: (tttt) => { console.log(2, tttt) c.addTrack(tttt.tracks[0]) setTimeout(() => { c.export({ success: (ee) => { console.log('export') console.log(ee) const { tempFilePath } = ee this.videoUrl = tempFilePath console.log(this.videoUrl) }, }) }, 1000) }, }) }, fail: (e) => { console.log('extractDataSource fail', e) }, }) 问题详细: 需求是拼接两段录音A、B。 现有做法: 1、在同一个容器(wx.createMediaContainer())内 2、分别调用container.extractDataSource去获取2段录音 3、用container.export出视频文件 微信开发者工具和实机(只测了安卓)得到的结果不一致。 得到结果: 1、开发者工具的结果是A+B,也就是播放完A再播放B,时长也是A的时长加B的时长。 2、安卓实机得到的结果是A和B同时播放,时长是其中一个时长。 我想问的是,MediaContainer是否能实现A+B的结果(而不是A叠加B),如果可以,如何实现。
2020-10-19 - MediaContainer.addTrack加入音频轨道问题?
MediaContainer.addTrack(MediaTrack track)基础库 2.9.0 开始支持,低版本需做兼容处理。将音频或视频轨道添加到容器 这里的音频轨道只能来自于通过MediaContainer.extractDataSource解析视频得到的音频吗?不能独立添加一个音频轨道进去吗(比如把录音文件mp3添加进去)?如果可以具体怎么添加
2020-02-12