一、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时所需要的各种操作和接口。只有在掌握了这些操作和接口之后,才能更好的进行公众号的开发和管理。