微信第三方平台-授权码获取、授权链接生成、令牌获取

本文主要整合微信文档各接口,最终得到可以使用的授权公众号令牌方法

1、在获得微信推送的ticket后,我们可以通过Ticket拿到自己的令牌(component_access_token):

POST https://api.weixin.qq.com/cgi-bin/component/api_component_token
{
“component_appid”: “appid_value” ,//第三方平台 appid
“component_appsecret”: “appsecret_value”,//第三方平台 appsecret
“component_verify_ticket”: “ticket_value”}//微信后台推送的 ticket

appid和appsecret可在开放平台详情中获取,appsecret需要管理员扫码后生成,生成后保存起来,无法再次查看。ticket则由授权事件接收配置接口提供。

返回结果示例:
{
“component_access_token”: “83_2TWHaWs10Dr_YHpvkBrasdadsdasdasMUfunPv8LWe-DeTZcKyJcptLhSzD8r7oTAGnRp6nZMRAhwkXUyrrFgDqn3CbH_nPnK34fk75AZOWdX4IV6fkTphXlDf_8TKTbADALCL”,
“expires_in”: 7200 }

拿到其中的component_access_token,该令牌一般用于url请求路径上,有效期为12小时,根据微信文档可以在11小时50分重新获取存储。

2、拿到我们的令牌后,就可以调用其他的微信API了,下一步则是生成让对方授权给我们的二维码或链接中的参数pre_auth_code(预授权码)

POST
https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=COMPONENT_ACCESS_TOKEN
{
“component_appid”: “appid_value” //第三方平台 appid
}

返回结果示例:
{
“pre_auth_code”:
“Cx_Dk6qiBE0Dmx4EmlT3oRfArPvwSQ-oa3NL_fwHM7VI08r52wazoZX2Rhpz1dEw”,
“expires_in”: 600
}

pre_auth_code有效期根据文档描述为30分钟,且不能共用,即每个授权二维码或链接单独一个预授权码。

官方描述:

参数必填说明
component_appid第三方平台方 appid
pre_auth_code预授权码
redirect_uri授权回调 URI(填写格式为https://xxx)。(插件版无该参数) 管理员授权确认之后会自动跳转进入回调 URI,并在 URL 参数中返回授权码和过期时间(redirect_url?auth_code=xxx&expires_in=600)
auth_type要授权的账号类型,即商家点击授权链接或者扫了授权码之后,展示在用户手机端的授权账号类型。 1 表示手机端仅展示公众号;2 表示仅展示小程序,3 表示公众号和小程序都展示。 4表示小程序推客账号; 5表示视频号账号; 6表示全部,即公众号、小程序、视频号都展示 第三方平台开发者可以使用本字段来控制授权的账号类型。 对于已经注销、冻结、封禁、以及未完成注册的账号不再出现于授权账号列表。
biz_appid指定授权唯一的小程序或公众号 。如果指定了appid,则只能是该appid的管理员进行授权,其他用户扫码会出现报错。auth_type、biz_appid 两个字段如果设置的信息冲突,则biz_appid生效的优先级更高。例如,auth_type=1,但是biz_appid是小程序的appid,则会按照auth_type=2来处理,即以biz_appid的类型为准去拉出来对应的权限集列表.
category_id_list指定的权限集id列表,如果不指定,则默认拉取当前第三方账号已经全网发布的权限集列表。 如需要指定单个权限集ID,写法为“category_id_list=99” ,如果有多个权限集,则权限集id与id之间用中竖线隔开。

最终H5授权链接示例:https://open.weixin.qq.com/wxaopen/safe/bindcomponent?action=bindcomponent&no_scan=1&component_appid=APPID&pre_auth_code=预授权码&redirect_uri=接口地址&auth_type=6
(这里使用H5链接没用二维码, 是因为二维码生成莫名其妙挂了,返回preauthcode无效,但H5又行。。。)

3、授权成功后,微信会回调redirect_url的地址,在该回调中会返回auth_code授权码,在该步骤需在接口上处理接收该值后,再用该code码获取authorizer_access_token令牌authorizer_refresh_token刷新令牌

  • 1.使用授权码获取授权信息

当用户在第三方平台授权页中完成授权流程后,第三方平台开发者可以在回调 URI 中通过 URL 参数获取授权码。使用以下接口可以换取公众号/小程序的授权信息。建议保存授权信息中的刷新令牌(authorizer_refresh_token)。使用过程中如遇到问题,可在开放平台服务商专区发帖交流。
注意: 公众号/小程序可以自定义选择部分权限授权给第三方平台,因此第三方平台开发者需要通过该接口来获取公众号/小程序具体授权了哪些权限,而不是简单地认为自己声明的权限就是公众号/小程序授权的权限。

POST 数据示例:

官方文档:https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/ticket-token/getAuthorizerAccessToken.html

POST https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=COMPONENT_ACCESS_TOKEN
{ “component_appid”:“appid_value” , // 第三方平台 appid
“authorization_code”: “auth_code_value” // auth_code }

  • 2.获取授权账号调用令牌

接口说明
该接口用于获取授权账号的authorizer_access_token。authorizer_access_token 有效期为 2 小时,authorizer_access_token 失效时,可以使用 authorizer_refresh_token 获取新的 authorizer_access_token。使用过程中如遇到问题,可在开放平台服务商专区发帖交流。
authorizer_access_token 有效期为 2 小时,开发者需要缓存 authorizer_access_token,避免 API 调用触发每日限额。
缓存方法可以参考:
返回:

官方文档:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html

POST
https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token=ACCESS_TOKEN
{
“component_appid”: “appid_value” , //第三方平台 appid
“authorizer_appid”: “auth_appid_value”, //授权方 appid
“authorizer_refresh_token”: “refresh_token_value” //刷新令牌
}

刷新令牌,获取授权信息时得到,用于更新令牌有效期,最后也是返回”success”给微信即可。
获取到令牌后即可代公众号调用微信API进行开发,即可获取到当前第三方平台数据或已授权公众号的令牌信息(30天失效,需重新生成授权链接)

要使用PHP完成微信第三方平台授权,你可以按照以下步骤进行操作: 1. 首先,你需要注册成为微信开放平台的开发者,并创建一个第三方平台应用。 2. 在创建应用后,你会得到一个AppID和AppSecret,这些是与微信平台进行通信的凭证。 3. 在你的PHP项目中,你需要使用curl库或其他HTTP请求库来发送HTTP请求到微信开放平台的API接口。 4. 首先,你需要获取授权码(pre_auth_code)。发送GET请求到以下接口: ``` https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=xxx ``` 其中,component_access_token是通过调用获取第三方平台component_access_token接口获取的。 5. 获取到预授权码后,你可以使用预授权码和你的AppID生成授权链接,引导用户进入授权页面: ``` https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=xxx&pre_auth_code=xxx&redirect_uri=xxx ``` 其中,component_appid是你的AppID,pre_auth_code是上一步获取的预授权码,redirect_uri是用户授权后的回调URL。 6. 用户在授权页面确认授权后,会跳转到你指定的回调URL,并携带授权码(authorization_code)参数。 7. 在回调URL对应的PHP页面中,你需要解析URL中的授权码参数,并使用授权码发送POST请求到以下接口,获取授权令牌(authorizer_access_token)和刷新令牌(authorizer_refresh_token): ``` https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=xxx ``` 其中,component_access_token是通过调用获取第三方平台component_access_token接口获取的。 8. 获取授权令牌和刷新令牌后,你可以使用它们来调用微信开放平台的其他API接口,完成后续的操作。 以上是使用PHP完成微信第三方平台授权的基本流程,具体的实现细节可能会因具体需求而有所不同。在实际开发中,你还需要处理授权过期、刷新令牌等情况,以保证授权的有效性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值