获取第三方平台access_token的http请求方式及参数说明

2025-06-23
来源:万象资讯

1,获取第三方平台

http请求方式: POST(请使用协议)

POST数据示例:

"":"" ,

"": "",

"ket": ""

请求参数说明

参数说明

第三方平台

第三方平台

ket

微信后台推送的,此会定时推送,具体请见本页末尾的推送说明

返回结果示例

"en":"-yD-",

"":7200

结果参数说明

参数说明

en

第三方平台

有效期

上述提到的参数中,前两个参数在平台上均可查到,而ke这一参数则需要单独获取。

获取方法:

上述内容是关于您自建或第三方开发平台的详细信息,其中涉及的授权环节所使用的URL是获取密钥的途径。

在第三方平台完成创建并审核通过之后,微信的服务器便会按照每10分钟的时间间隔,向其指定的“授权事件接收URL”发送ket信息。收到这些推送后,第三方平台必须对信息进行解密处理。因此,在授权流程中,必须接收微信发送的post数据,并对其进行解密,以获取相应的参数。

官方给出了个java的例子,可以看着例子进行讲述:

public static void 执行主程序入口点,参数为字符串数组,可能抛出异常。 // // 第三方回复公众平台 // // 需要加密的明文 定义了一个字符串变量encodingAesKey,其值为"abcdefghijklmnopqrstuvwxyz0123456789ABCDEFG"。 String token = "pamtest"; 获取的字符串表示的时间戳为1409304348。 String nonce = "xxxxxx"; appId的值为"wxb11529c136998cb6"。 String replyMsg = " 中文1407743423"; 创建了一个名为WXBizMsgCrypt的对象pc,该对象通过token、encodingAesKey和appId进行初始化。 字符串明文信息通过PC加密模块,结合回复消息内容、时间戳以及随机数,被成功转换成了加密后的信息。 输出:加密结果为,明文内容,后跟明文。 创建一个DocumentBuilderFactory实例,名为dbf,通过调用newInstance()方法,并使用DocumentBuilderFactory类。 dbf创建了新的DocumentBuilder实例,并将其赋值给db。 创建一个新的字符串读取器对象,并将明文内容作为参数传入。 输入源对象等于新创建的,基于读取资源的输入源实例。 从数据库中解析出数据流,并将其存储为文档对象:Document document = db.parse(is)。 获取文档的根元素,并将其赋值给变量root。 root节点下获取所有名为"Encrypt"的元素,并将结果存储在nodelist1变量中。 root节点下获取所有名为"MsgSignature"的元素,并将结果存储在nodelist2变量中。 获取到节点列表中第一个节点的文本内容后,将其赋值给加密字符串变量encrypt。 msgSignature 被赋值为节点列表 nodelist2 中第一个节点所包含的文本内容。 String format = ""; 从XML中提取的字符串,通过使用格式化方法,结合了指定的格式与加密后的内容。 // // 公众平台发送消息给第三方,第三方处理 // // 第三方收到公众号平台发送的消息 pc对msgSignature、timestamp、nonce和fromXML进行解密操作,得到的结果存储在变量result2中。 输出解密后的清晰文本内容为:result2。 pc函数调用了verifyUrl,且所有参数均未提供。 }

此代码块展示了加密与解密的过程,我们在授权环节接收到的微信加密的XML文档,因此我们的任务是对这些文件进行解密。我们可以对前述代码进行相应的调整,接下来,我将解析发送过来的数据。

public void auth_webhook() { logger.info("微信服务推送请求。"); 获取上下文对象,并存储到变量context中。 获取到上下文中的请求对象,将其赋值给HttpServletRequest变量request。 获取到上下文中的响应对象,将其赋值给HttpServletResponse类型的变量response。 logger.info("处理请求数据"); PrintWriter out = null; 创建一个新的字符串缓冲区对象,命名为json。 try { 设置请求的字符编码为“UTF-8”。 out = response.getWriter(); 从请求中获取,reader对象是通过调用request的getReader()方法得到的。 String line = null; 在读取过程中,只要获取到的行内容不为空,即(line = reader.readLine()) != null,就持续进行循环。 json.append(line); } } catch (Exception e) { 记录器记录错误,输出异常信息,并附带异常对象。 return; } logger.info("json:=="+json); 记录器输出信息:“json.toString的值等于:”+json.toString(); 对请求进行处理,并授权事件,使用json字符串进行转换。 输出响应,标记为成功;直接呈现“成功”状态。 } /** * 处理授权事件的推送 * @param request * @throws AesException * @throws IOException */ 进行授权事件处理,接收HTTP请求和XML数据。 logger.info("开始处理请求数据"); 获取请求参数中的nonce值,并将其赋值给字符串变量String nonce。 从请求中获取参数“timestamp”,并将其赋值给字符串变量timestamp。 获取请求参数中的签名信息,并将其赋值给字符串变量signature。 msgSignature变量被赋值为请求中参数"msg_signature"的值。 String token="你平台的token"; 定义字符串变量encodingAesKey,其值为“你的key”。 String appId="你的id"; 日志记录器显示:nonce值为{},时间戳为{}。 日志记录器输出:“签名信息为:{},消息签名信息为:{}”。 try { 创建了一个名为WXBizMsgCrypt的对象pc,该对象通过token、encodingAesKey和appId进行初始化。 xml等于pc解密消息签名、时间戳、随机数后得到的xml。 logger.info("解密后的数据:"+xml); } catch (AesException e) { 在处理异常情况时,若捕获到错误,系统将自动生成相应的异常处理代码块。 e.printStackTrace(); } }

上述xml文件内容为解密后所需获取的数据,通过解析该数据,我们可以提取出所需的字段,具体操作可参考相关说明。

2,获取预授权码

http请求方式: POST(请使用协议)

POST数据示例:

"":""

请求参数说明

参数说明

第三方平台方

返回结果示例

"":"-",

"":600

结果参数说明

参数说明

预授权码

有效期,为20分钟

获取了预先授权的代码之后,我们随即需要激活授权界面,并可在个人操作界面增设一个按键,以触发微信的授权页面。

3,引导进入授权页面

在任一HTML或JSP页面中,若需添加一个按钮,该按钮的交互目标地址应当设定为:

该网站要求第三方平台必须提供相关方信息、预先授权的代码以及回调的统一资源标识符。

在指定URL中,必须取得扫描用户所授权的代码。用户扫描后,系统将自动跳转至指定的URI,并将用户的授权代码反馈至你的平台,此时你只需接收并妥善保存即可。

4,授权后回调URI,得到授权码和过期时间

授权流程一旦完成,系统将自动跳转至指定的回调地址,随后在URL的参数部分,将展示相应的授权码以及该码的有效期限(例如:xxx&=600)。

5,使用授权码换取公众号的授权信息

接口调用请求说明

http请求方式: POST(请使用协议)

POST数据示例:

"":"" ,

" ": ""

请求参数说明

参数说明

第三方平台

授权后的代码将发送至第三方平台,具体操作流程请参考第三方平台的授权指南。

返回结果示例

"": {

"": "",

"ken": "-",

"": 7200,

"oken": "dTo--",

"":

"": {

"id": 1

},

"": {

"id": 2

},

"": {

"id": 3

结果参数说明

参数说明

授权信息

授权方

ken

授权方令牌(在授权的公众号具备API权限时,才有此返回值)

有效期(在授权的公众号具备API权限时,才有此返回值)

oken

在授权公众号拥有API权限的情况下,会返回刷新令牌这一值。此令牌主要用于第三方平台获取并更新已授权用户的权限,且仅在授权时提供,需谨慎保管。若不幸遗失,用户需重新进行授权,方可获得新的刷新令牌。

开发者需留意公众号所赋予的权限清单,特别注意的是,若用户已将消息与菜单权限授权予某一第三方,若再次授权另一第三方,鉴于权限集的互斥性,后续第三方的授权将自动取消前者的权限集。开发者可从返回信息中核实此情况,以防止信息缺失。权限编号1至8依次为:

消息与菜单权限集

用户管理权限集

帐号管理权限集

网页授权权限集

微信小店权限集

多客服权限集

业务通知权限集

微信卡券权限集

最后拿到上述的去获取用户的信息:

http请求方式: POST(请使用协议)

POST数据示例:

"":"" ,

"": ""

请求参数说明

参数说明

服务

授权方

返回结果示例

"": {

"": "微信SDK Demo ",

"": "",

"": { "id": 2 },

"": { "id": 0 },

"":"",

"":"腾讯计算机系统有限公司",

禁止对特定内容进行修改,相关数据统计如下:修改次数为零,删除次数为零,添加次数为零,复制次数为零,其他操作次数为零。

"":""

"":"URL",

},

"": {

"": "",

"":

{ "": { "id": 1 } },

{ "": { "id": 2 } },

{ "": { "id": 3 } }

结果参数说明

参数说明

授权方昵称

授权方头像

授权方公众号的类型分别为:0表示订阅号,1表示源自历史老账号的升级订阅号,2则代表服务号。

授权方的认证种类如下:-1表示尚未完成认证;0表示已通过微信认证;1表示已获得新浪微博认证;2表示已取得腾讯微博认证;3表示资质认证已通过,但名称认证尚未完成;4表示资质认证通过,名称认证未通过,且新浪微博认证已获通过;5表示资质认证通过,名称认证未通过,且腾讯微博认证已获通过。

授权方公众号的原始ID

公众号的主体名称

授权方公众号所设置的微信号,可能为空

用以了解以下功能的开通状况(0代表未开通,1代表已开通):

:是否开通微信门店功能

:是否开通微信扫商品功能

:是否开通微信支付功能

:是否开通微信卡券功能

:是否开通微信摇一摇功能

二维码图片的URL,开发者最好自行也进行保存

授权信息

授权方

公众号授权给开发者的权限集列表,ID为1到15时分别代表:

消息管理权限

用户管理权限

帐号服务权限

网页服务权限

微信小店权限

微信多客服权限

群发与通知权限

微信卡券权限

微信扫一扫权限

微信连WIFI权限

素材管理权限

微信摇周边权限

微信门店权限

微信支付权限

自定义菜单权限

请注意:

该字段返回结果不涉及公众号是否拥有该权限集的权限(原因在于部分公众号可能拥有),您需依据公众号的账号类别及其认证状态,来判定其接口权限。

分享