微信第三方平台对接流程梳理 - 回调带自定义参数

整体流程图 :
在这里插入图片描述

1.接收验证票据(component_verify_ticket)

出于安全考虑,在第三方平台创建审核通过后,微信服务器会每隔 10 分钟会向第三方的消息接收地址推送一次 component_verify_ticket,用于获取第三方平台接口调用凭据。

第三方的程序被动接收,建议每次都将新值放入Redis中,供其他请求获取值(获取令牌时使用)。

接口文档:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/api/component_verify_ticket.html

推送内容解密后的示例:

 <xml>
	<AppId>some_appid</AppId>
	<CreateTime>1413192605</CreateTime>
	<InfoType>component_verify_ticket</InfoType>
	<ComponentVerifyTicket>some_verify_ticket</ComponentVerifyTicket>
 </xml>

2.获取令牌(component_access_token)

第三方平台通过component_appid和 component_appsecret,以及 component_verify_ticket(每 10 分钟推送一次的安全 ticket)来获取自己的接口调用凭据(component_access_token)

(微信开放平台管理中心的第三方平台详情页中可以查看的 AppID 和 AppSecret)。 

在需要授权时,第三方平台程序主动发送POST请求获取,单个令牌有效期为2个小时(7200s),在令牌快过期时(比如1小时50分),重新调用接口获取,可以将其存储在Redis中。

接口文档:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/api/component_access_token.html

POST数据示例

{
  "component_appid":  "appid_value" ,
  "component_appsecret":  "appsecret_value",
  "component_verify_ticket": "ticket_value"
}

返回数据示例

{
  "component_access_token": "61W3mEpU66027wgNZ_MhGHNQDHnFATkDa9-2llqrMBjUwxRSNPbVsMmyD-yq8wZETSoE5NQgecigDrSHkPtIYA",
  "expires_in": 7200
}

3.获取预授权码(pre_auth_code)

通过第二步获取的接口调用凭据(component_access_token)来获取用于授权流程准备的预授权码(pre_auth_code)。

每个预授权码有效期为10分钟(600s)需将其存储在Redis中,生成授权页会使用。

接口文档:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/api/pre_auth_code.html

请求参数说明
参数	类型	必填	说明
component_access_token	string	是	第三方平台component_access_token,不是authorizer_access_token
component_appid	string	是	第三方平台 appid
返回数据示例:

{
  "pre_auth_code": "Cx_Dk6qiBE0Dmx4EmlT3oRfArPvwSQ-oa3NL_fwHM7VI08r52wazoZX2Rhpz1dEw",
  "expires_in": 600
}

4.引入用户进入授权页

第三方平台方可以在自己的网站中放置“微信公众号授权”或者“小程序授权”的入口,或生成授权链接放置在移动网页中,引导公众号和小程序管理员进入授权页。

用户进入第三方平台授权页后,需要确认并同意将自己的公众号或小程序授权给第三方平台方,完成授权流程,授权方式分为以下两种,详细介绍:

方式一:授权注册页面扫码授权

授权页网址为:

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

5.获取授权码(pre_auth_code)

当用户在第三方平台授权页中完成授权流程后,第三方平台开发者可以在回调 URI 中通过 URL 参数获取授权码。

回调URI中会接收授权码信息和过期时间(redirect_url?auth_code=xxx&expires_in=600)(获取接口调用凭据时使用)

6.获取接口调用凭据(authorizer_access_token)

通过授权码和自已接口的调用凭据(component_access_token)换取公众号或小程序的接口调用凭据(authorizer_access_token 和用于前者快过期时用来刷新它的 authorizer_refresh_token)和授权信息(授权了哪些权限等信息)建议保存授权信息中的刷新令牌(authorizer_refresh_token)。

接口文档:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/api/authorization_info.html

7.获取/刷新授权公众号或小程序的接口调用凭据

刷新令牌(在授权的公众号具备API权限时,才有此返回值),刷新令牌主要用于第三方平台获取和刷新已授权用户的 authorizer_access_token。

一旦丢失,只能让用户重新授权,才能再次拿到新的刷新令牌。用户重新授权后,之前的刷新令牌会失效,所以建议来刷新公众号或小程序的接口调用凭据。

接口文档:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/api/api_authorizer_token.html

8、第三方平台接口使用

通过以上授权流程,获取到微信小程序的接口调用凭据authorizer_access_token后即可完成相应的业务开发了。

如小程序基本信息接口,以下可以获取小程序的基本信息:

 GET https://api.weixin.qq.com/cgi-bin/account/getaccountbasicinfo?access_token=ACCESS_TOKEN

 接口文档:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Mini_Programs/Mini_Program_Information_Settings.html

9.如何在企业微信网页授权链接中加入自定义参数

问题复现
在使用企业微信网页授权链接时,redirect_url中无法加入自定义的参数。
比如:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=https://www.baidu.com?need_trim=need_trim&agentId=1&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

这样的授权链接,在重定向到redirect_url的时候,是不会携带need_trim和agentId参数的。

解决方案
将redirect_url进行encodeUrlComponent,推荐一个在线转换的网址:encodeUrlComponent。转换之后授权链接就成了这种形式:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=https%3A%2F%2Fwww.baidu.com%3Fneed_trim%3Dneed_trim%26agentId%3D1&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

这个时候,重定向redirect_url之后,会携带need_trim和agentId两个自定义的参数。

详细授权流程说明:

https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Authorization_Process_Technical_Description.html

相关接口文档说明:

https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/api/pre_auth_code.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值