一、基础接口access_token
凭据 access_token 是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用 access_token 作为认证要素
获取到的 access_token 有效期为2个小时,且获取接口的调用次数有限制,需要存储复用并定时刷新,公众平台会保证在刷新的5分钟内新老 access_token 都可用实现业务的平滑过渡
公众号在调用接口获取 access_token 时,需要提前将服务器的 IP 地址添加到微信公众平台的基本配置的 IP 白名单中,小程序无需配置 IP 白名单
- 请求说明
参数名称 | 是否必须 | 说明 |
grant_type | 是 | 获取 access_token 填写 client_credential |
appid | 是 | 第三方用户唯一凭证 |
secret | 是 | 第三方用户唯一凭证密钥,即 appsecret |
- 返回说明
参数名称 | 参数说明 |
access_token | 获取到的基础接口凭证 |
expires_in | 凭证有效时间,单位:秒 |
/************成功示例************/
{
"access_token": "22_AfDy6E_UokcJ3GGrWwhcyEr5r-LN0T7aVmN74VDfrZmw7eeiXmMWb7AU6Z9mYq7Ey5Nggl82bSPn",
"expires_in": 7200
}
/************失败示例************/
{
"errcode": 40013,
"errmsg": "invalid appid"
}
二、网页授权access_token
用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑
微信网页授权是通过 OAuth2.0 机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证,即网页授权 access_token,通过网页授权 access_token 可以进行授权后接口调用,如获取用户基本信息
网页授权 access_token 需要通过 code 换取,同时返回的还有 openid 即用户唯一标识;返回报文类型为 JSON 类型
- 请求说明
参数名称 | 是否必须 | 参数说明 |
appid | 是 | 公众号的唯一标识 |
secret | 是 | 公众号的appsecret |
code | 是 | 填写code参数,见三 |
grant_type | 是 | 填写为authorization_code |
- 返回说明
参数名称 | 参数说明 |
access_token | 网页授权接口调用凭证。注意:此 access_token 与基础接口的 access_token 不同 |
expires_in | access_token 接口调用凭证超时时间,单位(秒) |
refresh_token | 用户刷新 access_token |
openid | 用户唯一标识。注意:用户在未关注公众号时访问也会产生一个唯一的OpenID |
scope | 用户授权的作用域,使用逗号(,)分隔 |
/************成功示例************/
{
"access_token": "22_qlj-5sxlhqQSykf2eW2OpIAGXoxx_JBlDmkBmhb6H9QXhnBw_mPjsYqDt18C-hwAwdWbf0N",
"expires_in": 7200,
"refresh_token": "22_E7O3tE50OmaLI_7-JLEgbqFCflsfwvqR0-6nKMsOjrsvygnz4GcSDjCKDS4hGnMvi_eE3c",
"openid": "ov5yQ8_ILc_--TfUa-IzuIL-B5Ok",
"scope": "snsapi_userinfo"
}
/************失败示例************/
{"errcode":40029,"errmsg":"invalid code"}
三、网页授权前置code
在获取网页授权 access_token 时,需要先获取 code 做为票据。每次用户授权后返回的 code 都是不一样,一个 code 只能使用一次,且5分钟未被使用将自动过期
以 snsapi_base 为 scope 发起的网页授权,是用来获取进入页面的用户的 openid 的,这种授权是静默授权并自动跳转到 redirect_uri 指定的回调页
以 snsapi_userinfo 为 scope 发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,且由于用户同意过,所以无须关注就可在授权后获取该用户的基本信息
获取 code 的请求必须在微信浏览器内发送,在静默授权或用户确认后,公众平台将自动跳转请求到 redirect_uri 指定的回调地址
- 请求说明
参数名称 | 是否必须 | 参数说明 |
appid | 是 | 公众号的唯一标识 |
redirect_uri | 是 | 授权后重定向的回调链接地址。使用 urlEncode 对链接进行处理 |
response_type | 是 | 返回类型,请填写code |
scope | 是 | 应用授权作用域,snsapi_base 或 snsapi_userinfo |
state | 否 | 重定向后会带上state参数,可以填写a-zA-Z0-9的参数值,最多128字节 |
#wechat_redirect | 是 | 无论直接打开还是做页面302重定向时候,必须带此参数 |
- 回调说明
参数名称 | 参数说明 |
code | 换取 网页授权 access_token 的票据 |
state | 官方回调的保留域,回调跳转时原样携带返回 |
param | 自定义的参数名及其参数值,回调跳转时原样携带返回 |
http://demo.xl.com/wx/oauth/login?param=value&code=071mv17I1Fikw00a5N8I19KM6I1mv17J&state=10001
四、网页开发jsapi_ticket
微信 JS-SDK 是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包,通过JS-SDK可借助微信使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用分享、扫一扫、卡券、支付等微信特有的能力
jsapi_ticket 是公众号调用 JS-SDK 接口的票据,所有需要使用 JS-SDK 的页面都必须先通过 wx.config 注入权限验证配置,而配置中的 signature 字段的生成则需要 jsapi_ticket 的参与
获取 jsapi_ticket 需要通过基础接口 access_token 作为票据,获取接口的调用次数有限制,需要存储复用并定时刷新,获取到的 jsapi_ticket 有效期为7200秒,接口返回类型为 JSON 类型
- 请求说明
参数名称 | 是否必须 | 参数说明 |
type | 是 | 请求类型,请填写 jsapi |
access_token | 是 | 基础接口 access_token。见一 |
- 返回说明
参数名称 | 参数说明 |
errcode | 错误代码 |
errmsg | 错误消息 |
ticket | 网页开发工具包 JS-SDK 接口的调用票据 |
expires_in | 凭证有效时间,单位:秒 |
{
"errcode": 0,
"errmsg": "ok",
"ticket": "LIKLckvwlJT9cWIhEQTwfIn035troj3P-aU7eHjdlobrTrMGEwUne8ON3n2GlJogGlKpo46nE4ZPw3qc7w",
"expires_in": 7200
}
附、微信测试公众号
https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login