微信開發的時候有一個很便利的途徑來進行一個用戶的一步註冊登陸,就是使用用戶的微信信息來直接進行登錄,能夠省去不少沒必要要的麻煩。那具體這些信息是如何來獲取的呢?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