微信的網頁授權登陸


 
在登陸界面,讓用戶選擇是手動登陸,還是微信授權登陸。
 
如果是微信授權登陸(思路):微信授權登陸,判斷數據庫有沒用這個openid
    ①如果這個openid不存在
         保存這個openid到數據庫;
         然后直接跳轉到完善信息頁面,包括:用戶昵稱(登陸名)、密碼、手機號。
             @如果手機號不存在,則保存完善的用戶信息,並且保存用戶信息到session完成登錄。
             @如果手機號已經存在,直接把微信授權用戶的信息保存到之前的用戶信息里面,並且刪除之前保存的授權用戶信息。並且保存用戶信息到session完成登錄。
         用戶完善信息成功,可以在PC端登陸。
    ②如果這個openid已經存在,但沒有完善個人信息
         則跳轉到完善信息頁
    ③如果這個openid已經存在,且完善了個人信息,
         保存用戶信息到session完成登錄;
         則跳轉到主頁。
 
如果是手動登陸(思路): 用戶在微信客戶端,選擇手動后,提醒是否綁定微信號
     如果選擇綁定微信號,則把當前微信的openid與用戶信息綁定,保存到數據庫。  (則下次就不用再手動輸入,就可以通過微信授權登陸到這個賬號)。
 
思路二:
 ①如果這個openid不存在 
        即首次進入,跳轉到登陸頁,需要用戶手動登陸(通過手機號、密碼,完成登陸)
        登陸成功,提示是否微信授權,如果同意微信授權(把這個openid與手動登陸的賬號綁定),下次可以自動登陸。
 
  ③如果這個openid已經存在
         openid對應用戶存在的情況下,檢查用戶是否能夠合法登錄 
         保存用戶信息到session完成登錄;
         則跳轉到主頁。
 
 
 
公眾號和服務號的網頁授權登陸:  
  獲取openid的案例:
    public function index(){
        //來自微信授權登陸
        if(isset($_GET['code'])) {
            $code = $_GET['code'];
            //通過code和AppID(應用ID) 、AppSecret(應用密鑰) 換取網頁授權access_token和openid
            $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx9ec2de2b4763aaff&secret=40eecba815d28cf349b886d02638d621&code=$code&grant_type=authorization_code";
            $htt = $this->https_post($url,"");
            $htt = json_decode($htt,true);
            $openid = $htt['openid'];
           …………………………
     }

 

 
 
 
 
 
企業號的網頁授權登陸:
  獲取openid的案例:
    public function index(){
        //來自微信授權登陸
        if(isset($_GET['code'])) {
            $code = $_GET['code'];
            //通過CorpID和Secret來換取AccessToken
            $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=XXX&corpsecret=xxxx";
            $htt = $this->https_post($url,"");
            $htt = json_decode($htt,true);
            $access_token = $htt["access_token"];

            //通過code和access_token換取網頁授權openid
            $url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=$access_token&code=$code";
            $htt = $this->https_post($url,"");
            $htt = json_decode($htt,true);

//            print_r($htt);exit;

            if(isset($htt['UserId'])) {
                $openid = $htt['UserId'];  //企業成員授權時返回
            }else {
                $openid = $htt['OpenId'];  //非企業成員授權時返回
            }
             …………………………
    
    }        

 

 
判斷頁面是否是在微信客戶端打開的方法:
/**
 * 判斷頁面是否是在微信客戶端打開
 */
    function is_weixin() {
        if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
            return 1;
        }
        return 0;
    }


//判斷頁面是否是在微信客戶端打開。 0:表示不是,1表示是在微信客戶端中打開
   $is_weixin =  is_weixin();

 

模擬post請求:

    //模擬post請求
    public function https_post($url,$data){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $result = curl_exec($curl);
        if(curl_errno($curl)) {
            return 'Errno'.curl_errno($curl);
        }
        curl_close($curl);
        return $result;
    }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM