深入理解WeChat公众号authorizer

一、authorizer概述

在WeChat公众号的生态中,一个服务号或订阅号往往对应多个第三方应用,这些应用都需要使用公众号的API接口进行开发。在API接口中,涉及到公众号授权的相关信息,例如access_token, jsapi_ticket 等。这些信息都是通过微信开放平台中的第三方授权管理来进行维护的,而这个授权管理的核心就是authorizer。

通过authorizer,第三方应用可以使用公众号API,并且还能获取到公众号用户的信息。同时,公众号也能通过authorizer来管理和监控第三方应用。在接下来的内容中,我们将通过多个方面来深入探讨authorizer的功能和用法。

二、获得authorizer_access_token

在第三方应用中,访问公众号API的时候需要填写一个access_token,而在使用存在authorizer的公众号中,则需要填写 authorizer_access_token。authorizer_access_token的获取方式与access_token类似,需要先获取authorizer_refresh_token,再通过接口调用来刷新并获取新的authorizer_access_token。

authorizer_refresh_token可以在使用授权方令牌获取授权方信息接口中进行获取。获取到之后,就可以使用以下接口来获取authorizer_access_token。

https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?
component_access_token=COMPONENT_ACCESS_TOKEN
POST数据:
{
    "component_appid":"xxxx",
    "authorizer_appid":"xxxx",
    "authorizer_refresh_token":"xxxx"
}

接口返回结果中包含authorizer_access_token和expires_in字段,expires_in 表示authorizer_access_token的超时时间,单位为秒。获取到authorizer_access_token之后,就可以进行后续的API调用了。

三、获取用户信息

在使用公众号API的过程中,获取用户信息是必不可少的。但是,在使用authorizer的情况下,获取用户信息的方式与普通公众号不同。

首先,我们需要在接口中使用openid参数来指定需要获取信息的用户。openid可以通过微信授权登陆接口获取到,其中也涉及到使用到authorizer。

https://open.weixin.qq.com/connect/oauth2/authorize?
appid=APPID
&redirect_uri=REDIRECT_URI
&response_type=code
&scope=snsapi_base
&state=123#wechat_redirect

通过上述接口,用户可以使用微信登陆并授权的方式来获得openid。获得到openid之后,就可以使用以下接口来获取用户信息了。

https://api.weixin.qq.com/cgi-bin/user/info?
access_token=ACCESS_TOKEN
&openid=OPENID
&lang=zh_CN

使用上述接口可以获取到用户的基本信息,包括用户昵称、头像等。同时,如果需要获取更多的信息,例如用户的所在地、性别等,还需要进行授权。

四、消息管理

在使用authorizer的情况下,第三方应用也可以对公众号的消息进行管理,包括接收和发送消息。

对于消息的接收,我们可以使用以下接口来进行处理。

https://api.weixin.qq.com/cgi-bin/message/custom/send?
access_token=ACCESS_TOKEN
POST数据:
{
    "touser": "OPENID",
    "msgtype": "text",
    "text": {
        "content": "这是一条测试消息"
    }
}

使用上述接口可以向指定用户发送一条文本消息,如果需要发送其他类型的消息,只需将msgtype参数设置为其他相应的值即可。

对于消息的接收,我们需要在第三方应用的开发环境下启用消息兼容性接口,在该接口处理的函数中,会接受到公众号发送过来的消息,然后进行相关的处理。下面是接收消息的代码示例。

$msg = file_get_contents('php://input');
$msg_data = simplexml_load_string($msg, 'SimpleXMLElement', LIBXML_NOCDATA);

五、菜单管理

在使用authorizer的情况下,也可以通过接口来进行公众号的菜单管理。需要注意的是,当使用authorizer时,需要在自定义菜单接口中指定authorizer_access_token参数,而不是access_token。

在使用自定义菜单的过程中,我们需要通过以下接口来获取菜单列表。

https://api.weixin.qq.com/cgi-bin/menu/get?
access_token=ACCESS_TOKEN&agentid=AGENTID

通过上述接口能够获取到当前公众号菜单的列表,如果需要进行修改,则可以通过以下接口进行更新。

https://api.weixin.qq.com/cgi-bin/menu/create?
access_token=ACCESS_TOKEN&agentid=AGENTID
POST数据:
{
    "button":[
    {    
        "type":"click",
        "name":"测试1",
        "key":"V1001_TODAY_MUSIC"
    },
    {
        "name":"菜单",
        "sub_button":[
        {    
            "type":"view",
            "name":"搜索",
            "url":"http://www.soso.com/"
        },
        {
            "type":"view",
            "name":"视频",
            "url":"http://v.qq.com/"
        },
        {
            "type":"click",
            "name":"赞一下我们",
            "key":"V1001_GOOD"
        }]
    }]
}

六、总结

在本文中,我们对authorizer的使用进行了深入的探讨。通过多个方面的分析,我们熟悉了在使用authorizer时所需要的各种操作和接口。只有在掌握了这些操作和接口之后,才能更好的进行公众号的开发和管理。

原创文章,作者:FVWT,如若转载,请注明出处:https://www.506064.com/n/131498.html

(0)
FVWTFVWT
上一篇 2024-10-03
下一篇 2024-10-03

相关推荐

  • Flink开发入门指南

    一、Flink开发环境搭建 Flink的开发环境搭建分为两部分,分别是本地开发环境和集群开发环境。 本地开发环境搭建需要安装Java SDK和Maven,具体步骤如下: 1. 安装…

    编程 2024-10-14
  • 使用Python执行Shell脚本

    一、引言 Shell脚本是一种在Unix、Linux、macOS等操作系统下运行的脚本语言,可以实现很多自动化操作。Python作为一种强大的编程语言,也可以通过外部库执行Shel…

    编程 2024-10-04
  • PythonSmote介绍:机器学习中的数据平衡技术

    一、PythonSmote的作用 PythonSmote是一种用于解决分类问题中数据不平衡的方法。数据是不平衡的,因为在分类问题中,某些类可能具有比其他类更多或更少的训练示例。分类…

    编程 2024-10-04
  • chromev8nodejs,谷歌chrome安卓版v88

    本文目录一览: 1、nodejs 是什么 2、现在前端必须掌握nodejs技术吗 3、node.js与v8是什么关系 4、node.js是什么 5、nodejs代码在chrome下…

    编程 2024-10-04
  • 使用Nginx搭建Web服务器

    一、为什么选择Nginx? Nginx是一款高性能、高并发、低消耗的Web服务器,它的设计理念是将Web服务器与应用程序服务器分离,以提高效率。与传统的Apache服务器相比,Ng…

    编程 2024-10-04
  • Python字符串应用示例

    一、字符串基础操作 Python中字符串是不可变对象,但是可以通过一些基本操作对字符串进行修改、拼接、截取等操作。具体包括: 1、字符串索引:通过索引获取字符串中某个位置的字符,如…

    编程 2024-10-03
  • mysql数据库重要吗(数据库与mysql啥关系)

    本文目录一览: 1、mysql是干什么用的? 2、mysql数据库的优点 3、mysql数据库 4、mysql学了可以干什么 5、MYSQL数据库的作用是什么 mysql是干什么用…

    编程 2024-10-04
  • mysql数据库导入导出问题(mysql数据库数据导出的方法)

    本文目录一览: 1、Mysql 导出导入数据库问题。不要复制的,因为看不懂。 2、如何导出和导入MYSQL数据(数据迁移 3、MySQL数据库导出与导入及常见错误解决 4、如何实现…

    编程 2024-10-10
  • php用户名正则,用户名和密码正则验证

    本文目录一览: 1、php写出一个验证用户ID的正则表达式 2、PHP 注册表单的正则验证 3、php 用户名和密码 正则表达式 4、php正则表达式验证用户名 5、php 判断 …

    编程 2024-10-14
  • 深入了解 VS Code 内置浏览器

    VS Code 是一款功能强大的开发工具,而内置浏览器是其中一个非常实用的功能。通过内置浏览器,你可以在同一个编辑器窗口内编辑代码、预览效果、以及调试程序。在本文中,我们将从多个方…

    编程 2024-10-14

发表回复

登录后才能评论