PC网站应用接入微信登录
参考文档:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316518&token=&lang=zh_CN
微信开放平台里面的文档已经说明的很详细了。这里再用实例补充下。
1.发送请求
微信登录的请求链接:https://open.weixin.qq.com/connect/qrconnect?appid=12312312312312&redirect_uri=www.baidu.com&response_type=code&scope=snsapi_login&state=3072355978#wechat_redirect
参数说明:
appid:应用唯一标识,必填
redirect_uri:重定向地址,需要进行UrlEncode,必填
response_type: code,必填
scope:应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可,必填
state:用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验,非必填
用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数:www.baidu.com?code=CODE&state=STATE
若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数:www.baidu.com?state=STATE
第二步:通过code获取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,必填
正确的返回:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE","unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
参数说明:
access_token:接口调用凭证
expires_in: access_token接口调用凭证超时时间,单位(秒)(目前为2个小时)
refresh_token: 用户刷新access_token
openid: 授权用户唯一标识
scope: 用户授权的作用域,使用逗号(,)分隔
unionid: 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
access_token是调用授权关系接口的调用凭证,由于access_token有效期(目前为2个小时)较短,当access_token超时后,可以使用refresh_token进行刷新。refresh_token拥有较长的有效期(30天),当refresh_token失效的后,需要用户重新授权。
获取第一步的code后,请求以下链接进行refresh_token:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=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调用接口
获取access_token后,进行接口调用,有以下前提:
1. access_token有效且未超时;
2. 微信用户已授权给第三方应用帐号相应接口作用域(scope)。