微信公众号可以通过微信网页授权机制,来获取用户基本信息,可以用于微信登录功能
关于网页授权的两种scope的区别说明
1、静默授权:以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
2、显示授权:以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
具体而言,网页授权流程分为四步:
1、引导用户进入授权页面同意授权,获取code
2、通过code换取网页授权access_token(与基础支持中的access_token不同)
3、如果需要,开发者可以刷新网页授权access_token,避免过期
4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)
第一步:用户同意授权,获取code
1 function getCode($scope,$state = \'STATE\'){ 2 $method = \'https://open.weixin.qq.com/connect/oauth2/authorize?\'; 3 $params = array( 4 \'appid\' => $this->appId, 5 \'redirect_uri\' => ($_SERVER[\'REQUEST_SCHEME\'] ? $_SERVER[\'REQUEST_SCHEME\'] : \'http\')."://".$_SERVER[\'HTTP_HOST\'].$_SERVER[\'PHP_SELF\'].$_SERVER[\'QUERY_STRING\'], 6 \'response_type\' => \'code\', 7 \'scope\' => $scope, 8 \'state\' => $state, 9 ); 10 11 $getCodeApi = $method.(http_build_query($params))."#wechat_redirect"; 12 header("Location:".$getCodeApi); 13 14 }