一、code是什么?
code作为换取网页授权access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
二、注意
code只能使用一次,5分钟未被使用自动过期。
三、理解分析
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
参数说明
如果想通过openid拿到用户信息,scope授权作用域一定为snsapi_base
如果业务需要拼接写自定义参数,可传入state(注意最多128字节)
参数 | 是否必须 | 说明 |
---|---|---|
appid | 是 | 公众号的唯一标识 |
redirect_uri | 是 | 授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理 |
response_type | 是 | 返回类型,请填写code |
scope | 是 | 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 ) |
state | 否 | 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节 |
#wechat_redirect | 是 | 无论直接打开还是做页面302重定向时候,必须带此参数 |
下图为scope等于snsapi_userinfo时的授权页面:
用户同意授权后
如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。
code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
错误返回码说明如下:
返回码 | 说明 |
---|---|
10003 | redirect_uri域名与后台配置不一致 |
10004 | 此公众号被封禁 |
10005 | 此公众号并没有这些scope的权限 |
10006 | 必须关注此测试号 |
10009 | 操作太频繁了,请稍后重试 |
10010 | scope不能为空 |
10011 | redirect_uri不能为空 |
10012 | appid不能为空 |
10013 | state不能为空 |
10015 | 公众号未授权第三方平台,请检查授权状态 |
10016 | 不支持微信开放平台的Appid,请使用公众号Appid |