背景
我们有一个小程序,开发环境要用accessToken,然后生产环境也要用accessToken,但是小程序不像公众号有测试号,只有一个小程序如果开发环境重新获取accessToken,那么生产环境就会自动失效,这种情况下有什么解决办法呢?
解决方案1、同步法
如果生产环境和开发环境方便同步,那么后续开发环境就做个配置不去获取accessToken了,每次要用accessToken就从生产环境拿下来用,虽然只有2h有效,但是将就着用了。
不足:accessToken有效期太短,并且有些环境网络隔离,要从生产环境拿下accessToken比较困难。
解决方案2、模拟法
第一版本上线后,后续开发测试环境的测试都不去调用微信的接口了,直接写死返回结果测试。
不足:新接口肯定要acccessToken来测试的啊。
解决方案3、新申请一个小程序
我们可以新申请一个小程序,这个小程序只用于开发测试,不发版。这样也可以。
不足:小程序很多接口都有备案、认证以及各种资质,这个测试的小程序不一定满足。
解决方案3、微信开发平台
上面的解决方案,都是基于这个小程序是我们能掌控的小程序来出发的,但是假设这个小程序是第三方的小程序,第三方只是要求我们给他批量生成小程序二维码或者其它的一些功能怎么办?此时就得用到微信开放平台。
1、注册开放平台
注:记得用企业来注册,个人权限很多都没有
2、创建两个第三方平台
这里为什么要两个呢,一个是开发环境,一个是生产环境,这个看个人的需要。
3、设置权限集合
这里一定要设置权限集合,不然后面生成授权码用户扫码可能看不到公众号,也可能看不到小程序。
其它开发资料都维护好。
第三方平台开发注意事项
我们主要是参考官方文档
1、先获取component_verify_ticket
验证票据(component_verify_ticket),在第三方平台创建审核通过后,微信服务器会向其 ”授权事件接收URL” 每隔 10 分钟以 POST 的方式推送 component_verify_ticket.有了这个后我们就可以获取component_access_token 这些。
2、getComponentAccessToken
3、公众号openid
请求如下接口获取公众号的openid
https://api.weixin.qq.com/sns/oauth2/component/access_token?appid=APPID&code=CODE&grant_type=authorization_code&component_appid=COMPONENT_APPID&component_access_token=COMPONENT_ACCESS_TOKEN
4、小程序openid
请求如下接口获取小程序的openid
https://api.weixin.qq.com/sns/component/jscode2session?component_access_token=ACCESS_TOKEN
5、获取公众号或者小程序的authorizer_access_token
authorizer_access_token可以用于调用公众号或者小程序的其它功能,比如小程序获取手机号,二维码生成这些,正常我们都是会有access_token的,但是很多接口这个access_token可以用我们获取的authorizer_access_token,这样就不会跟小程序本身的access_token冲突,这个就是解决问题的关键点,我们先去获取。
参考文档:
https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/
https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/ticket-token/getAuthorizerAccessToken.html
6、调用小程序手机号快速验证
我们上面已经成功获取了authorizer_access_token,那试试看能否用这个来调用原本小程序的手机号快速验证接口。
这里我们肯定是去小程序的开发文档里面看。
可以看到这里需要传access_token,官方文档会有描述可以用authorizer_access_token,只有这里说了的接口我们才能通过上面的authorizer_access_token调用。
再比如获取小程序二维码接口都可以看到。
不过貌似学生身份认证看不到这个,但是在第三方平台里面的小程序权限集可以看到应该也是可以的。