1、主要步骤
(1)需要先进行微信 OAuth 2.0 授权,获取code
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE
appid: 公众号的appID, 用于唯一标识公众号或小程序
redirect_uri: 用户授权成功后,微信会将用户重定向到这个 URI,并附上授权码(code)或其他信息
response_type:code 表示期望的响应类型。在 OAuth 2.0 流程中,通常使用 code 来请求授权码
scope:snsapi_base 授权范围。snsapi_base 表示用户授权后,公众号或小程序可以获取用户的基础信息,但不包括用户的私有信息。
state:STATE 开发者定义的参数,用于在授权请求中添加额外的业务参数。这些参数会在授权回调时原样返回给开发者。
`注意redirect_url需要 UrlEncode编码处理,推荐网址http://www.jsons.cn/urlencode
(2)调用网站获取用户在此公众号下的唯一标识 openid
https://api.weixin.qq.com/sns/oauth2/access_token?appid=AppId&secret=AppSecret&code=CODE&grant_type=authorization_code
appid: 公众号的appID, 用于唯一标识公众号或小程序
secret: 你的微信公众号或小程序的 AppSecret,用于生成签名和调用接口
code: 上一个接口返回的授权码,可通过code将客户信息发送给授权网址
grant_type:authorization_code 授权类型,此处为 authorization_code,表示使用授权码模式
2、环境准备
(1)注册微信公众号测试平台账号
https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 微信测试号
(2)设置js接口安全域名,设置后开发者可在该域名下调用开放接口
(3) 扫码关注测试公众号,关注成功后账号会在右侧显示
(4)下载微信开发者工具
3、操作验证获取openid
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
(1)获取code
首先测试号需要设置网页授权获取用户信息 ,设置后微信的授权数据才能传给第三方页面
(2)在微信开发者工具中请求这个地址
请求后地址栏携带了code
(3)获取openid (现在可以不用在微信开发者工具中请求了)
4、其他微信开放接口的调用
(1)获取access_token
简介:
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
接口:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
结果:
(2)获取微信服务器地址
https://api.weixin.qq.com/cgi-bin/get_api_domain_ip?access_token=ACCESS_TOKEN
结果:
(3)给用户发送模板消息
a 配置消息模板
b 获取模板列表
https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token=ACCESS_TOKEN
返回结果说明
参数 | 是否必填 | 说明 |
---|---|---|
access_token | 是 | 接口调用凭证 |
template_id | 是 | 模板ID |
title | 是 | 模板标题 |
primary_industry | 是 | 模板所属行业的一级行业 |
deputy_industry | 是 | 模板所属行业的二级行业 |
content | 是 | 模板内容 |
example | 是 | 模板示 |
c 向用户发送消息
http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
返回参数说明:
参数 | 是否必填 | 说明 |
---|---|---|
touser | 是 | 接收者openid |
template_id | 是 | 模板ID |
url | 否 | 模板跳转链接(海外账号没有跳转能力) |
miniprogram | 否 | 跳小程序所需数据,不需跳小程序可不用传该数据 |
appid | 是 | 所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系,暂不支持小游戏) |
pagepath | 否 | 所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar),要求该小程序已发布,暂不支持小游戏 |
data | 是 | 模板数据 |
client_msg_id | 否 | 防重入id。对于同一个openid + client_msg_id, 只发送一条消息,10分钟有效,超过10分钟不保证效果。若无防重入需求,可不填 |
结果:
手机成功收到公众号发送的消息