佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > php獲取微信openid方法總結(jié)

php獲取微信openid方法總結(jié)

熱門標簽:電子圍欄 團購網(wǎng)站 銀行業(yè)務 阿里云 Mysql連接數(shù)設置 服務器配置 Linux服務器 科大訊飛語音識別系統(tǒng)

使用微信接口,無論是自動登錄還是微信支付我們首先需要獲取的就是openid,獲取openid的方式有兩種,一種是在關注的時候進行獲取,這種訂閱號就可以獲取的到,第二種是通過網(wǎng)頁授權(quán)獲取,這種獲取需要的是認證服務號。

今天我要說的是第二種網(wǎng)頁授權(quán)獲取openid。下面是我寫的一個關于獲取openid的類

?php

/**

 * 微信授權(quán)相關接口

 * 

 * @link http://www.phpddt.com

 */

class Wchat

{

   private $app_id = 'wx444444444444';

   private $app_secret = '77777777';

   private $state='aaaa';

  /**

   * 獲取微信授權(quán)鏈接

   * 

   * @param string $redirect_uri 跳轉(zhuǎn)地址

   * @param mixed $state 參數(shù)

   */

  public function get_authorize_url($redirect_uri = '', $state = '')

  {

    $redirect_uri = urlencode($redirect_uri);

    return "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->app_id}redirect_uri={$redirect_uri}response_type=codescope=snsapi_userinfostate={$state}#wechat_redirect";

  }

   /**

   * 獲取微信openid

   */

  public function getOpenid($turl)

  {

    if (!isset($_GET['code'])){

      //觸發(fā)微信返回code碼

       

       $url=$this->get_authorize_url($turl, $this->state);

       

      Header("Location: $url");

      exit();

    } else {

      //獲取code碼,以獲取openid

      $code = $_GET['code'];

      $access_info = $this->get_access_token($code);

      return $access_info;

    }

     

  }

  /**

   * 獲取授權(quán)token網(wǎng)頁授權(quán)

   * 

   * @param string $code 通過get_authorize_url獲取到的code

   */

  public function get_access_token($code = '')

  {

   $appid=$this->app_id;

   $appsecret=$this->app_secret;

    

    $token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."secret=".$appsecret."code=".$code."grant_type=authorization_code";

    //echo $token_url;

    $token_data = $this->http($token_url);

    // var_dump( $token_data);

    if($token_data[0] == 200)

    {

      $ar=json_decode($token_data[1], TRUE);

      return $ar;

    }

     

    return $token_data[1];

  }

   

   

  public function http($url, $method='', $postfields = null, $headers = array(), $debug = false)

  {

    $ci = curl_init();

    /* Curl settings */

    curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);

    curl_setopt($ci, CURLOPT_TIMEOUT, 30);

    curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);

 

    switch ($method) {

      case 'POST':

        curl_setopt($ci, CURLOPT_POST, true);

        if (!empty($postfields)) {

          curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);

          $this->postdata = $postfields;

        }

        break;

    }

    curl_setopt($ci, CURLOPT_URL, $url);

    curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);

    curl_setopt($ci, CURLINFO_HEADER_OUT, true);

 

    $response = curl_exec($ci);

    $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);

 

    if ($debug) {

      echo "=====post data======\r\n";

      var_dump($postfields);

 

      echo '=====info=====' . "\r\n";

      print_r(curl_getinfo($ci));

 

      echo '=====$response=====' . "\r\n";

      print_r($response);

    }

    curl_close($ci);

    return array($http_code, $response);

  }

 

}

?>

getOpenid($turl)這個方法就是獲取openid的方法。前端調(diào)用代碼如下:

$openid=isset($_COOKIE['openid'])?$_COOKIE['openid']:'';

  

   if(empty($openid))

   {

     $wchat=new wchat();

     $t_url='http://'.$_SERVER['HTTP_HOST'].'/user.php?act=register';

      

     $info=$wchat->getOpenid($t_url);

      

     if($info){

        $openid=$info['openid'];

      setcookie('openid',$openid,time()+86400*30);  

        

     }

      

   }

以上就是我總結(jié)的獲取openid的方法啦。

以上就是php獲取微信openid的詳細內(nèi)容,更多請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • PHP通過微信跳轉(zhuǎn)的Code參數(shù)獲取用戶的openid(關鍵代碼)

標簽:萍鄉(xiāng) 蚌埠 衢州 棗莊 廣元 江蘇 衡水 大理

巨人網(wǎng)絡通訊聲明:本文標題《php獲取微信openid方法總結(jié)》,本文關鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    海兴县| 广东省| 太康县| 黄石市| 历史| 独山县| 济宁市| 绥芬河市| 仙居县| 和顺县| 新蔡县| 安多县| 星子县| 奎屯市| 涿州市| 桦川县| 武鸣县| 姚安县| 依兰县| 聂荣县| 蒲城县| 渝北区| 湖北省| 安多县| 元阳县| 大埔县| 涟源市| 富裕县| 梅河口市| 西藏| 察雅县| 铅山县| 金川县| 巩义市| 长春市| 陵川县| 韶山市| 师宗县| 兴海县| 屯留县| 赤城县|