js微信扫描二维码登录网站技术原理(2)

参数 是否必须 说明
appid     应用唯一标识,在微信开放平台提交应用审核通过后获得  
secret     应用密钥AppSecret,在微信开放平台提交应用审核通过后获得  
code     填写第一步获取的code参数  
grant_type     填authorization_code  

返回说明

正确的返回:

{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" }

参数 说明
access_token   接口调用凭证  
expires_in   access_token接口调用凭证超时时间,单位(秒)  
refresh_token   用户刷新access_token  
openid   授权用户唯一标识  
scope   用户授权的作用域,使用逗号(,)分隔  

错误返回样例:

{"errcode":40029,"errmsg":"invalid code"}

刷新access_token有效期

access_token是调用授权关系接口的调用凭证,由于access_token有效期(目前为2个小时)较短,当access_token超时后,可以使用refresh_token进行刷新,access_token刷新结果有两种:

1.1. 若access_token已超时,那么进行refresh_token会获取一个新的access_token,新的超时时间;
2.2. 若access_token未超时,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token。

refresh_token拥有较长的有效期(30天),当refresh_token失效的后,需要用户重新授权。

请求方法

获取第一步的code后,请求以下链接进行refresh_token:

参数说明

参数 是否必须 说明
appid     应用唯一标识  
grant_type     填refresh_token  
refresh_token     填写通过access_token获取到的refresh_token参数  

返回说明

正确的返回:

{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" }

参数 说明
access_token   接口调用凭证  
expires_in   access_token接口调用凭证超时时间,单位(秒)  
refresh_token   用户刷新access_token  
openid   授权用户唯一标识  
scope   用户授权的作用域,使用逗号(,)分隔  

错误返回样例:

{"errcode":40030,"errmsg":"invalid refresh_token"}

第三步:通过access_token调用接口

获取access_token后,进行接口调用,有以下前提:

1.1. access_token有效且未超时;

2.2. 微信用户已授权给第三方应用帐号相应接口作用域(scope)。

对于接口作用域(scope),能调用的接口有以下:

授权作用域(scope) 接口 接口说明
snsapi_base   /sns/oauth2/access_token   通过code换取access_token、refresh_token和已授权scope  
/sns/oauth2/refresh_token   刷新或续期access_token使用  
/sns/auth   检查access_token有效性  
snsapi_userinfo   /sns/userinfo   获取用户个人信息  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwxzps.html