前言现在微信登录是一个网站和APP的标准配置,所以微信授权登录是我们应该掌握的。微信授权登录有4种方式:1.通过微信开放平台2.通过认证的微信服务号3.通过认证的微信订阅号4.通过微信小程序曲线救国今天我们来讲解一下微信服务号通过OAuth2.0机制网页授权登录,获取用户基本信息。流程1.获取code2,获取access_token3,获取用户基本信息通过以下接口获取code,参数说明:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect以上链接配置好后,点击访问或跳转。配置示例:https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的公众号APPID&redirect_uri=你服务器接收code的页面链接&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect点击允许,会启动获取代码,然后跳转到你的redirect_uri,redirect_uri就是你要接收代码的页面。redirect_uri代码可以这样写,getcode.php比如你的服务器域名是www.abc.com,而你的代码放在服务器的wx目录下,那么你的redirect_uri应该是:http://www.abc.com/wx/getcode.php最后,你在微信中点击获取代码的链接,然后会弹出一个窗口询问是否允许获取用户信息。允许后跳转到getcode.php进行下一步。access_token可以通过如下接口获取,参数说明:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code上面需要的参数基本有APPID,APPSECRET属于到你的服务账号,CODE已经拿到了,直接请求接口,就可以拿到access_token。下面的getcode.php页面:$appsecret="你的公众号APPSECRET";$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";//请求$getopenid=file_get_contents($url);$getopenid_arr=json_decode($getopenid,true);$openid=$getopenid_arr["openid"];$access_token=$getopenid_arr["access_token"];?>上面的代码可以直接返回openid和access_token,然后直接通过另外一个接口,就可以得到基本信息了用户。通过以下接口获取用户基本信息(头像,昵称),参数说明:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN代码我就不用了,按照上面的请求方法是一样的。扫码登录实现流程上一步我们获取到的access_token需要缓存,因为会失效,我们应该缓存到服务器或者数据库中,openid也需要保存在数据库中。1、存入数据库前,先查看数据库中是否存在该用户的openid。如果是,直接更新用户信息,返回登录成功。如果没有,初始化一段数据进去。2.然后浏览器轮询这个数据的登录状态。如果用户扫码登录获取到头像和昵称,则将头像和昵称更新为刚刚初始化的数据。直到扫码登录后才会停止轮询,建议设置一个过期时间,防止轮询时间过长导致服务器故障。作者:TANKING日期??:2020-2-20网址:LIKEYUNBA.COM微信:face6009