- 微信提供给开发者的测试账号平台
- https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
- 微信网页开发文档
- https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
- 微信JS接口签名校验工具
- https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
- 参数
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
-
- code
- code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未使用自动过期
- 存在:已授权
- 不存在:未授权,则跳转微信授权链接,
- appid(必填)
- 公众号的唯一标识
- redirect_url(必填)
- 授权成功后跳转的地址,微信会跳转到改链接,并通过?的形式拼接code,请使用urlEncode对链接进行处理
- response_type(必填)
- 返回类型,请填写code
- scope(必填)
- 应用授权作用域
- 静默授权(scope=snsapi_base):不弹出授权页面,直接跳转,只能获取用户openid
- 非静默授权(scope=snsapi_userinfo):弹出授权页面,可通过openid拿到昵称、性别、所在地,即使在未关注的情况下,只要用户授权,也能获取其信息。
- 应用授权作用域
- state
- 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
- #wechat_redirect(必填)
- 无论直接打开还是做页面302重定向时,必须带此参数
- 提示
-
若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。 -
由于授权操作安全等级较高,所以在发起授权请求时,微信会对授权链接做正则强匹配校验,如果链接的参数顺序不对,授权页面将无法正常访问。 -
跳转回调redirect_uri,应当使用https链接来确保授权code的安全性。
-
- code
- 步骤
- 用户同意授权,获取code
- 通过code换区网页授权access_token
- 获取access_token
-
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code -
参数
- appid(必填,同上)
- secret(必填)
- 公众号的appsecret
- code(必填)
- 填写第一步获取的code参数
- grant_type(必填)
- 填写为authorization_code
-
- 正确返回的json数据包
{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" }- 参数
- access_toke
- 网页授权接口调用凭证:此access_token与基础支持的access_token不同
- expires_in
- 调用凭证超时时间,单位(秒)
- refresh_token
- 用户刷新access_token
- openid
- 用户唯一标识,请注意,在未关注公众号时,用户访问公众号的页面,也会产生一个用户和公众号唯一的OpenId
- scope
- 用户授权的作用于,使用逗号(,)分隔
- access_toke
- 参数
- 错误返回的json数据包
{"errcode":40029,"errmsg":"invalid code"}
- 获取access_token
- 刷新access_token(如果需要)
- 拉去用户信息(需要scope为snsapi_userinfo)
- 附:检验授权凭证(access_token)是否有效