微信开发的时候有一个很便利的途径来进行一个用户的一步注册登陆,就是使用用户的微信信息来直接进行登录,能够省去不少没必要要的麻烦。那具体这些信息是如何来获取的呢?json
首先呢,咱们须要对微信进行一个受权,让微信页面有权限来读取咱们的用户信息:api
$redirect_uri = urlencode($url); //设置受权页面,此处填写回调的受权页面地址 $scope = 'snsapi_userinfo'; $appid = APPID; $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$appid}&redirect_uri={$redirect_uri}&response_type=code&scope={$scope}&state=1#wechat_redirect"; header('location:'.$url);
scope表示一个对用户的一个受权方式,这里咱们用snsapi_userinfo也就是弹出式的受权,能够在用户没有关注公主号的状况下同样进行用户信息的获取。微信
appid就是咱们公众号的appid。微信开发
回调的地址是在跳转完之后,微信平台会把用户端的页面跳转到这个回调的地址上,而且将一个code以get的形式发送过来,具体的处理方式是这样的:app
function https_request($url){ $curl = curl_init(); //初始化一个cURL会话 //设置请求选项, 包括具体的url curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); //禁用后cURL将终止从服务端进行验证 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl,CURLOPT_HEADER,0); // curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); // curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($curl); curl_close($curl); $jsoninfo = json_decode($response,true); return $jsoninfo; } $code = $_GET["code"]; $token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code"; $token_info = https_request($token_url); //根据openid和access_token查询用户信息 $access_token = $token_info['access_token']; $openid = $token_info['openid']; $userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN"; $user_info = https_request($userinfo_url);
咱们从微信平台得到了code之后,就能够去交换access_token以及open_id了,有了access_token和open_id就能够最终得到咱们须要的用户信息了,最后提醒下读者,不要忘记再页面的最后跳转回以前用户访问的页面哦,不然用户信息是获取到了,而用户界面就只有一个大白屏了。curl