Oauth2.0
微信网页授权 首先要获取appID和appsecret
后台设置授权域名 支持IP
后台设置域名或者IP时不要加http://或者https:// 直接填写域名即可 如果使用ip地址调试 直接输入IP即可(211.32.122.77) 如上图
业务流程
1.在开发者开发的系统上引导用户点击微信登录,点击微信登录时会访问类似如下url
https://open.weixin.qq.com/connect/oauth2/authorize?appid=申请到的APPID&redirect_uri=填写用户同意授权后跳转的地址,域名或者ip前需要加http://或者https://&response_type=code&scope=snsapi_userinfo(如果填写snsapi_base则通过access_token拉去用户信息时会报错,无法获取到用户的头像、昵称等信息)&state=STATE#wechat_redirect
测试时不能使用微信PC版,如果遇到回调时提示 ****点击继续访问 此时不要点击 继续访问 按钮 可以点击 底部 访问原网页
解释:回调后code只能使用一次,如果使用某code请求了微信的接口,再次请求时会提示code被使用过,无法获取到access_token
2.用户在微信内访问上述url地址时会提醒用户授权(弹出授权确认框,只有scope为snsapi_userinfo时才会弹出授权确认框),用户确认授权后悔跳转到步骤1中的redirect_uri参数对应的url,并且会在地址中传入code参数,此时会请求开发者设置的url 并执行对应的程序
3.在redirect_uri对应的url中需要获取code,加上appsecret 请求微信的接口 请求地址如下
https://api.weixin.qq.com/sns/oauth2/access_token?appid=申请到的APPID&secret=申请到的appsecret&code=get传递的code参数&grant_type=authorization_code
请求时可以使用file_get_contents 但是不推荐,推荐使用curl的方式抓取,并且设置超时时间 防止服务器有过度的资源消耗
如果数据正常会获取到access_token和openid(注:此请求只能请求一次,因为code只能使用一次)
4.通过access_token抓取用户信息
请求https://api.weixin.qq.com/sns/userinfo?access_token=步骤3中的access_token&openid=步骤3中的openid&lang=zh_CN
openid是微信用户的唯一标识,和appid绑定