小程序或者公众号授权给第三方平台的技术实现流程比较简单,如下图所示:
第三方服务商构建授权链接放置自己的网站,用户点击后,弹出授权页面。
下面对其进行详细介绍:
步骤 1:第三方平台方获取预授权码(pre_auth_code)
步骤 2:引入用户进入授权页
第三方平台方可以在自己的网站中放置小程序授权”的入口,引导小程序管理员进入授权页。
授权页网址为:
https://sp.q.qq.com/#/app_auth?component_appid=xxx&redirect_uri=xxx&pre_auth_code=xxx&auth_type=xxx。
参数 | 必填 | 参数说明 |
---|---|---|
component_appid | 是 | 第三方平台方 appid |
pre_auth_code | 是 | 预授权码 |
redirect_uri | 是 | 回调 URI |
auth_type | 否 | 要授权的帐号类型, 1 则商户扫码后,手机端仅展示公众号、2 表示仅展示小程序,3 表示公众号和小程序都展示。如果为未指定,则默认小程序和公众号都展示。第三方平台开发者可以使用本字段来控制授权的帐号类型。 |
biz_appid | 否 | 指定授权唯一的小程序 |
注:auth_type、biz_appid 两个字段互斥。
步骤 3:用户确认并同意登录授权给第三方平台方
用户进入第三方平台授权页后,需要确认并同意将自己的小程序授权给第三方平台方,完成授权流程。
步骤 4:授权后回调 URI,得到授权码(authorization_code)和过期时间
授权流程完成后,授权页会自动跳转进入回调 URI,并在 URL 参数中返回授权码和过期时间(redirect_url?auth_code=xxx&expires_in=600)
步骤 5:利用授权码调用小程序的相关 API
在得到授权码后,第三方平台方可以使用授权码换取授权小程序的接口调用凭据(authorizer_access_token,也简称为令牌),再通过该接口调用凭据,按照 小程序开发文档的说明,去调用小程序相关 API。 (能调用哪些 API,取决于用户将哪些权限集授权给了第三方平台方,也取决于小程序自身拥有哪些接口权限),使用 JS SDK 等能力。具体请见【公众号第三方平台的接口说明】
下面对各 API 和机制进行介绍(特别注意,所有 API 调用需要验证调用者 IP 地址。只有在第三方平台申请时填写的白名单 IP 地址列表内的 IP 地址,才能合法调用,其他一律拒绝):
功能 | API 的作用 |
---|---|
1、推送 component_verify_ticket | 出于安全考虑,在第三方平台创建审核通过后,QQ服务器 每隔 10 分钟会向第三方的消息接收地址推送一次 component_verify_ticket,用于获取第三方平台接口调用凭据。 |
2、获取第三方平台 component_access_token | 第三方平台通过自己的 component_appid(即在QQ小程序第三方平台管理中心的第三方平台详情页中的 AppID 和 AppSecret)和 component_appsecret,以及 component_verify_ticket(每 10 分钟推送一次的安全 ticket)来获取自己的接口调用凭据(component_access_token) |
3、获取预授权码 pre_auth_code | 第三方平台通过自己的接口调用凭据(component_access_token)来获取用于授权流程准备的预授权码(pre_auth_code) |
4、使用授权码换取小程序的接口调用凭据和授权信息 | 通过授权码和自己的接口调用凭据(component_access_token),换取小程序的接口调用凭据(authorizer_access_token 和用于前者快过期时用来刷新它的 authorizer_refresh_token)和授权信息(授权了哪些权限等信息) |
5、获取/刷新授权小程序的接口调用凭据 | 通过 authorizer_refresh_token 来刷新小程序的接口调用凭据 |
6、推送授权相关通知 | 当小程序对第三方进行授权、取消授权、更新授权时,将通过事件推送告诉开发者 |
7、代替小程序调用接口 | 在完成授权后,第三方平台可通过小程序的接口调用凭据(authorizer_access_token)来代替它调用接口,具体请见“代小程序实现业务”文件夹中的内容 |