评论

利用第三方授权 更新并发布多套小程序

小程序通过授权给第三方平台,让第三方平台来帮助用户更新上传发布代码,提高效率

开发一个小程序管理平台,其他小程序管理员只需一次授权给第三方,第三方平台即可帮助他发布小程序,不同管理员的配置参数不同,其他功能都基本相同
开发步骤:
一、注册开放平台:
到微信开放平台注册账号 :https://open.weixin.qq.com/cgi-bin/readtemplate?t=regist/regist_tmpl&lang=zh_CN
二、申请第三方平台开发
申请第三方平台必须拥有一定的开发者资质,必须先通过开发者资质认证,才可以开始第三方平台开发,在开发平台账号管理中可进行资质认证
三、创建第三方平台
申请完成后,在开发平台的管理中心,点击第三方平台,在下方可看到创建第三方按钮

点击创建第三方平台,进入下方页面,选择平台型服务商,

1.填写基本信息,与定制化服务商一致

2.选择权限,只能选择业务必须的权限集,否则无法通过审核,公众号或小程序也可能会拒绝授权给你。(权限集是公众号或小程序的权限集合,用于实现业务)

3.填写开发资料

4.开发资料
①授权发起也域名(即用户打开我们自己的授权页域名)

②授权事件接收URL(我们接收所有授权小程序或公众号取消授权通知、授权成功通知、授权更新通知事件的url地址 , 包括接收微信平台推送的ticket)

③消息与事件接收URL (我们接收所有授权小程序或公众号的消息和事件推送,例如客服消息 微信就会推送到这个地址上)
这里要注意一点:该参数按规则填写(需包含/$APPID$,如www.abc.com/$APPID$/callback) 填写的地址需要包含/$APPID$ 我们后续可以用nginx 重写地址 把访问指向同一个地址就可以了
例如:填写的地址是 www.abc.com/msg/$APPID$/msgEventPath.php    nginx重写地址:  rewrite ^/msg/(.)/(.).php /msgEventPath.php last;

④其它按照提示填写就可以了,添加上白名单ip
然后提交审核就可以了,如果信息没有问题是马上就能审核成功的,然后再管理中心的第三方平台即可看到改第三方服务商,详情里面即有改第三方平台相关的配置信息
四、小程序管理员授权给第三方平台
只有小程序管理员授权给第三方,第三方才能为该小程序发布,更新部署代码。
授权开发步骤:
1.保存component_verify_ticket, 微信端会定时推送消息到配置好的授权事件接收URL(创建三方平台时填写的,可在该三方详情中查看) 上,我们需要保存这个component_verify_ticket和 不断更新,component_verify_ticket必须保持是微信端推送的最新一个

2.用component_verify_ticket去换取第三方平台的token(第三方平台指的就是我们自己在开发的平台)token是有有效期的,所以我们要保存它的过期时间,并将token做缓存,当token没过期时就不用再去换取,反之我们要利用最新的component_verify_ticket去重新获取token

3.换取预授权码pre_auth_code,pre_auth_code是用来换取微信端的授权二维码的

4.跳转到授权页面(两种方式),建议第二种,方便
用户授权的时候会先打开我们自己的一个页面 (例如 http://www.abc.com/authorization.php ),这个页面里需要做一个按钮或者用js去跳转到微信的授权页面
①扫码授权 :跳转后得到授权码,注意这个页面只能用网页访问,小程序访问不了,因为不能将微信域名配置为业务域名用户扫码后 就可以授权给第三方平台了
https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx&auth_type=xxx。
②点击移动端链接快速授权https://mp.weixin.qq.com/safe/bindcomponent?action=bindcomponent&auth_type=3&no_scan=1&component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx&auth_type=xxx&biz_appid=xxxx#wechat_redirect
请求参数(两种方式一样)
component_appid 第三方平台方appid
pre_auth_code 预授权码
redirect_uri 回调URI 必须和授权地址同一个域名
auth_type 要授权的帐号类型:1则商户点击链接后,手机端仅展示公众号、2表示仅展示小程序,3表示公众号和小程序都展示。如果为未指定,则默认小程序和公众号都展示。第三方平台开发者可以使用本字段来控制授权的帐号类型。

前四步总结(移动端快速授权流程):
用户自己获取授权连接:
需要后台配合,给出一个接口,请求该接口则直接返回最新的预授权码(pre_auth_code),拿到授权码之后,再通过拼接返回一个授权地址,跳转到改地址,即为授权页面下方图二 ,用户点击授权即可授权给第三方。用户点击授权后,授权页会自动跳转进入回调URI,并在URL参数中返回授权码和过期时间(redirect_url?auth_code=xxx&expires_in=600),我们可以通过  $GET[‘authcode’] 去获取授权用户的小程序或二维码 调用接口的accesstoken(有效期两小时) 并将其保存/更新,然后我们就可以获取授权用户小程序或公众号的信息

5.使用授权码换取公众号或小程序的接口调用凭据和授权信息
接口调用请求说明
http请求方式: POST(请使用https协议)
https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=xxxx(component_access_token在第二步可获取)
POST请求参数示例:
{
“component_appid”:“appid_value” ,//第三方平台appid
“authorization_code”: “auth_code_value”//授权code,会在授权成功时返回给第三方平台
}
请求成功后拿到
authorizer_access_token:授权方接口调用凭据(在授权的公众号或小程序具备API权限时,才有此返回值),也简称为令牌,后面调用小程序待开发的api中使用,
authorizer_refresh_token:接口调用凭据刷新令牌(在授权的公众号具备API权限时,才有此返回值),刷新令牌主要用于第三方平台获取和刷新已授权用户的access_token,只会在授权时刻提供,请妥善保存。 一旦丢失,只能让用户重新授权,才能再次拿到新的刷新令牌

五、小程序模板开发
第三方平台帮助旗下已授权的小程序进行代码管理时,需先开发完成小程序模版,再将小程序模版部署到旗下小程序帐号中,具体流程如下:

第一步:绑定开发小程序

(1)第三方平台的开发人员需先到微信公众平台(mp.weixin.qq.com)申请一个普通的小程序并完善小程序的头像、昵称、简介、服务类目等信息。

(2)进入微信开放平台,在第三方平台详情中,将该小程序添加为开发小程序。

注意:绑定为开发小程序后,该小程序的在开发工具中上传,代码会直接上传到开放平台,不会上传到公众平台。

第二步:小程序模版的开发和上传

使用开发小程序的开发者微信号登录微信web开发者工具(IDE),开发者工具中按照正常的小程序开发流程进行代码开发和调试。开发完成后,在开发工具中点击上传。更新模板后需要更部署到旗下小程序之前必须上传到模板库。注意:上传时版本号要求不一样,一样的版本号会被默认为同一版本,判断为管理员没有更新

第三步:添加到小程序模版库,获得模版ID

从开发者工具中上传的代码,会先存在草稿箱中,每个开发小程序只保留最新一份上传记录。开发者可将草稿箱中的代码添加到小程序模版库中,小程序模版库中的模版不会被覆盖。最多可以有五十个代码模版,添加后可以获得模版ID(TemplateID)

拿到模板ID后,再加上之前获取到的authorizer_access_token(令牌),就能为授权过给该第三方平台的小程序部署代码了。

六、为旗下小程序进行代码管理
举个例子:为授权的小程序帐号上传小程序代码
1、为授权的小程序帐号上传小程序代码
请求方式: POST(请使用https协议)
https://api.weixin.qq.com/wxa/commit?access_token=TOKEN
POST数据示例
{
“template_id”:0,
“ext_json”:“JSON_STRING”, //ext_json需为string类型,请参考下面的格式
“user_version”:“V1.0”,
“user_desc”:“test”,
}
参数说明:
access_token 请使用第三方平台获取到的该小程序授权的authorizer_access_token
template_id 代码库中的代码模版ID
ext_json 第三方自定义的配置
user_version 代码版本号,开发者可自定义(长度不要超过64个字符)
user_desc 代码描述,开发者可自定义
通过此请求,第三方平台会自动将模板中的代码自动部署到授权给该第三方的小程序上
更多代码管理查看文档
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1453779503&token=1a70ae891ca6e0339cf56bd1b3c322b0ec86eec9&lang=
持续更新中…

最后一次编辑于  07-05  
点赞 4
收藏
评论

8 个评论

  • 小⃠
    小⃠
    12-02

    你好,审核通过后,怎么获取线上版本信息呢?

    12-02
    赞同
    回复 4
    • 小黎
      小黎
      12-03
      我不是很能理解获取版本信息是什么?审核通过你就可以考虑是否发布了啊,发布后线上版本就有了。
      12-03
      回复
    • 小⃠
      小⃠
      12-03回复小黎
      我是想说有没有接口能获取到发布后的线上版本号这些数据
      12-03
      回复
    • 小黎
      小黎
      12-03回复小⃠
      这些信息只有你为他们上传或发布小程序的时候,成功了就自己记录下来,微信暂没有提供获取这些信息的接口
      12-03
      回复
    • 小⃠
      小⃠
      12-03回复小黎
      好的。多谢
      12-03
      回复
  • ray
    ray
    11-18

    你好,请问一下: > 4.跳转到授权页面(两种方式),建议第二种,方便
    用户授权的时候会先打开我们自己的一个页面 (例如 http://www.abc.com/authorization.php ),这个页面里需要做一个按钮或者用js去跳转到微信的授权页面。

    这边自己的页面是否需要是配置的 `登录授权的发起页域名` 呢,如果不是的话点击按钮会不会跳转失败呢?

    11-18
    赞同
    回复 2
    • 小黎
      小黎
      11-19
      这个没有关系的,只要是授权的链接是正确的就行,比如你在公众号下面放一个授权按钮,点击立即授权小程序就进入一个你们自己写的页面,然后点击下面的授权,这个链接就是https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Authorization_Process_Technical_Description.html 说的授权方式的第二种,点击后就能看到自己有哪些小程序,你选择要授权的小程序授权给第三方就可以了
      11-19
      回复
    • ray
      ray
      11-19回复小黎
      好的,感谢
      11-19
      回复
  • 钰明
    钰明
    11-07

    按作者的思路,前端只是自己调式过程,本地有一个ext.json文件,但真正提交审核发布到线上,完全由后端调接口(请求参数带ext_json字段),前端的代码都不需要修改。https://api.weixin.qq.com/wxa/commit?access_token=TOKEN 该接口是会帮小程序替换线上的ext.json文件?

    11-07
    赞同
    回复 4
    • 小黎
      小黎
      11-07
      我们做了一个可视化的上传小程序的后台,点击旗下小程序为那个上传,然后选择模板,模板其实就是每次提交到开发平台的小程序模板小程序,自定义参数就是每个小程序特定的一些参数配置,他会取代你模板上写死的ext.json,各小程序请求的数据不同就是通过这个来区别的
      11-07
      回复
    • 钰明
      钰明
      11-07回复小黎
      明白了,实际上小程序这边不需要通过wx.getExtConfig去读取ext.json。我看文档还以为要读取到配置,然后像setData这样去更新本地的ext.json文件
      11-07
      回复
    • 小黎
      小黎
      11-07回复钰明
      我们就需要,因为每个小程序不同就是因为我们给每个小程序配置的 ext.json 文件不同 ,如果你们部署给小程序的代码和接口那些都一样就不需要
      11-07
      回复
    • 钰明
      钰明
      11-07回复小黎
      确实,我们只是需要配置跳转小程序的合法列表(最多10个),如果要区分不同客户的某些信息,还是要读取
      11-07
      回复
  • axing
    axing
    10-24

    求源码啊 大佬

    10-24
    赞同
    回复 2
    • 小黎
      小黎
      10-25
      我只是前端,只是调研了做这个需求需要的所有数据和接口,其他的都是后台写的,主要是那预授权码这里,后台才好做,其他的前端都可以直接掉官方接口测试
      10-25
      回复
    • axing
      axing
      10-25回复小黎
      可以加个 qq 请教下吗? 782254363 感谢
      10-25
      回复
  • 刁_Kyle
    刁_Kyle
    10-23

    1.已添加测试账号到白名单 2. 开发者工具已提交代码到草稿箱 怎么测试呢?

    10-23
    赞同
    回复 5
    • 小黎
      小黎
      10-23
      你说的是让旗下小程序授权给第三方么?
      10-23
      回复
    • 刁_Kyle
      刁_Kyle
      10-23回复小黎
      我们是第三方,使用的是平台型方式。
      10-23
      回复
    • 刁_Kyle
      刁_Kyle
      10-23回复刁_Kyle
      是不是走了第六步后,才能使用白名单配置的小程序进行测试(自测)
      10-23
      回复
    • 小黎
      小黎
      10-23回复刁_Kyle
      首先你们的白名单小程序授权给第三方后,才能对这个小程序进行代码上传,上传成功才能调用接口查看小程序体验二维码
      10-23
      回复
    • 山南水北
      山南水北
      12-06
      1.提交开发好的模板到草稿箱;
      2.选择草稿箱中的一个作为模板,拿到模板ID;
      3.让测试白名单中的小程序的管理员扫码授权给开放平台;
      4.开放平台代测试小程序提交代码(commit时需要填写模块ID,ext配置信息);
      5.获取体验码,扫码访问的就是这个测试白名单中的小程序
      12-06
      回复
  • SeeBLee
    SeeBLee
    10-15

    我想问下 代码审核的结果回调 XML内容体没有携带AppID吗? 我怎么准确知道是哪个AppID的结果返回的? 单单知道原始ID 好像不是很能准确定位到哪个AppId

    10-15
    赞同
    回复 1
    • ray
      ray
      11-18
      appId 是配置在 “消息与事件接收URL” 中的
      11-18
      回复
  • oral
    oral
    09-19

    你好,第六步上传小程序代码后还需要通过接口审核和发布吗

    09-19
    赞同
    回复 5
    • 小黎
      小黎
      09-19
      对的,基本上请求和上传代码一样的,这里有文档https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1489140610_Uavc4&token=&lang=zh_CN
      09-19
      回复
    • oral
      oral
      09-19回复小黎
      好的,谢谢
      09-19
      回复
    • 小黎
      小黎
      09-19回复oral
      遇到这方面的问题可以问我,整个流程我们已经跑通了
      09-19
      回复
    • oral
      oral
      09-19回复小黎
      发布完成后,是不是小程序还要检测更新
      09-19
      回复
    • 小黎
      小黎
      09-19回复oral
      不用啊,你说的是那个检测更新,小程序升级检测更新是小程序内部的,不关第三方的事
      09-19
      回复
  • 一鹏
    一鹏
    09-02

    上限只有5个,那有赞怎么实现那么多店铺同时授权给有赞的呢?

    09-02
    赞同
    回复 5