Rumah pembangunan bahagian belakang tutorial php PHP版QQ互联OAuth示例代码分享_PHP

PHP版QQ互联OAuth示例代码分享_PHP

May 30, 2016 am 08:45 AM
oauth

由于国内QQ用户的普遍性,所以现在各大网站都尽可能的提供QQ登陆口,下面我们来看看php版,给大家参考下

/**
 * QQ互联 oauth
 * @author dyllen
 *
 */
class Oauth
{
  //取Authorization Code Url
  const PC_CODE_URL = 'https://graph.qq.com/oauth2.0/authorize';
   
  //取Access Token Url
  const PC_ACCESS_TOKEN_URL = 'https://graph.qq.com/oauth2.0/token';
   
  //取用户 Open Id Url
  const OPEN_ID_URL = 'https://graph.qq.com/oauth2.0/me';
   
  //用户授权之后的回调地址
  public $redirectUri = null;
   
  // App Id
  public $appid = null;
   
  //App Key
  public $appKey = null;
   
  //授权列表
  //字符串,多个用逗号隔开
  public $scope = null;
   
  //授权code
  public $code = null;
   
  //续期access token的凭证
  public $refreshToken = null;
   
  //access token
  public $accessToken = null;
   
  //access token 有效期,单位秒
  public $expiresIn = null;
   
  //state
  public $state = null;
   
  public $openid = null;
   
  //construct
  public function __construct($config=[])
  {
    foreach($config as $key => $value) {
      $this->$key = $value;
    }
  }
   
  /**
   * 得到获取Code的url
   * @throws \InvalidArgumentException
   * @return string
   */
  public function codeUrl()
  {
    if (!$this->redirectUri) {
      throw new \Exception('parameter $redirectUri must be set.');
    }
    $query = [
        'response_type' => 'code',
        'client_id' => $this->appid,
        'redirect_uri' => $this->redirectUri,
        'state' => $this->getState(),
        'scope' => $this->scope,
    ];
   
    return self::PC_CODE_URL . '?' . http_build_query($query);
  }
   
  /**
   * 取access token
   * @throws Exception
   * @return boolean
   */
  public function getAccessToken()
  {
    $params = [
        'grant_type' => 'authorization_code',
        'client_id' => $this->appid,
        'client_secret' => $this->appKey,
        'code' => $this->code,
        'redirect_uri' => $this->redirectUri,
    ];
   
    $url = self::PC_ACCESS_TOKEN_URL . '?' . http_build_query($params);
    $content = $this->getUrl($url);
    parse_str($content, $res);
    if ( !isset($res['access_token']) ) {
      $this->thrwoError($content);
    }
   
    $this->accessToken = $res['access_token'];
    $this->expiresIn = $res['expires_in'];
    $this->refreshToken = $res['refresh_token'];
   
    return true;
  }
   
  /**
   * 刷新access token
   * @throws Exception
   * @return boolean
   */
  public function refreshToken()
  {
    $params = [
        'grant_type' => 'refresh_token',
        'client_id' => $this->appid,
        'client_secret' => $this->appKey,
        'refresh_token' => $this->refreshToken,
    ];
   
    $url = self::PC_ACCESS_TOKEN_URL . '?' . http_build_query($params);
    $content = $this->getUrl($url);
    parse_str($content, $res);
    if ( !isset($res['access_token']) ) {
      $this->thrwoError($content);
    }
   
    $this->accessToken = $res['access_token'];
    $this->expiresIn = $res['expires_in'];
    $this->refreshToken = $res['refresh_token'];
   
    return true;
  }
   
  /**
   * 取用户open id
   * @return string
   */
  public function getOpenid()
  {
    $params = [
        'access_token' => $this->accessToken,
    ];
   
    $url = self::OPEN_ID_URL . '?' . http_build_query($params);
       
    $this->openid = $this->parseOpenid( $this->getUrl($url) );
     
    return $this->openid;
  }
   
  /**
   * get方式取url内容
   * @param string $url
   * @return mixed
   */
  public function getUrl($url)
  {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_URL, $url);
    $response = curl_exec($ch);
    curl_close($ch);
   
    return $response;
  }
   
  /**
   * post方式取url内容
   * @param string $url
   * @param array $keysArr
   * @param number $flag
   * @return mixed
   */
  public function postUrl($url, $keysArr, $flag = 0)
  {
    $ch = curl_init();
    if(! $flag) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $keysArr);
    curl_setopt($ch, CURLOPT_URL, $url);
    $ret = curl_exec($ch);
   
    curl_close($ch);
    return $ret;
  }
   
   
  /**
   * 取state
   * @return string
   */
  protected function getState()
  {
    $this->state = md5(uniqid(rand(), true));
    //state暂存在缓存里面
    //自己定义
        //。。。。。。。。。
   
    return $this->state;
  }
   
  /**
   * 验证state
   * @return boolean
   */
  protected function verifyState()
  {
    //。。。。。。。
  }
   
  /**
   * 抛出异常
   * @param string $error
   * @throws \Exception
   */
  protected function thrwoError($error)
  {
    $subError = substr($error, strpos($error, "{"));
    $subError = strstr($subError, "}", true) . "}";
    $error = json_decode($subError, true);
     
    throw new \Exception($error['error_description'], (int)$error['error']);
  }
   
  /**
   * 从获取openid接口的返回数据中解析出openid
   * @param string $str
   * @return string
   */
  protected function parseOpenid($str)
  {
    $subStr = substr($str, strpos($str, "{"));
    $subStr = strstr($subStr, "}", true) . "}";
    $strArr = json_decode($subStr, true);
    if(!isset($strArr['openid'])) {
      $this->thrwoError($str);
    }
     
    return $strArr['openid'];
  }
}
Salin selepas log masuk

以上所述就是本文的全部内容了,希望大家能够喜欢。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PHP dan OAuth: Melaksanakan Integrasi Log Masuk Microsoft PHP dan OAuth: Melaksanakan Integrasi Log Masuk Microsoft Jul 28, 2023 pm 05:15 PM

PHP dan OAuth: Melaksanakan penyepaduan log masuk Microsoft Dengan pembangunan Internet, semakin banyak tapak web dan aplikasi perlu menyokong pengguna untuk log masuk menggunakan akaun pihak ketiga untuk menyediakan pengalaman pendaftaran dan log masuk yang mudah. Akaun Microsoft ialah salah satu akaun yang digunakan secara meluas di seluruh dunia, dan ramai pengguna ingin menggunakan akaun Microsoft untuk log masuk ke tapak web dan aplikasi. Untuk mencapai penyepaduan log masuk Microsoft, kami boleh menggunakan protokol OAuth (Open Authorization) untuk mencapainya. OAuth ialah protokol kebenaran standard terbuka yang membenarkan pengguna membenarkan aplikasi pihak ketiga bertindak bagi pihak mereka

OAuth dalam PHP: Mencipta Pelayan Kebenaran JWT OAuth dalam PHP: Mencipta Pelayan Kebenaran JWT Jul 28, 2023 pm 05:27 PM

OAuth dalam PHP: Mencipta Pelayan Kebenaran JWT Dengan peningkatan aplikasi mudah alih dan trend pemisahan bahagian hadapan dan belakang, OAuth telah menjadi bahagian yang amat diperlukan dalam aplikasi web moden. OAuth ialah protokol kebenaran yang melindungi sumber pengguna daripada capaian yang tidak dibenarkan dengan menyediakan proses dan mekanisme piawai. Dalam artikel ini, kita akan belajar cara membuat pelayan kebenaran OAuth berasaskan JWT (JSONWebTokens) menggunakan PHP. JWT ialah sejenis

Pembangunan PHP: Melaksanakan pembekal perkhidmatan OAuth2 menggunakan Pasport Laravel Pembangunan PHP: Melaksanakan pembekal perkhidmatan OAuth2 menggunakan Pasport Laravel Jun 15, 2023 pm 04:32 PM

Dengan populariti Internet mudah alih, semakin banyak aplikasi memerlukan pengguna untuk mengesahkan dan membenarkan diri mereka sendiri. OAuth2 ialah rangka kerja pengesahan dan kebenaran popular yang menyediakan aplikasi dengan mekanisme piawai untuk melaksanakan fungsi ini. LaravelPassport ialah pelaksanaan pelayan OAuth2 yang mudah digunakan, selamat dan luar biasa yang menyediakan pembangun PHP alat yang berkuasa untuk membina pengesahan dan kebenaran OAuth2. Artikel ini akan memperkenalkan penggunaan LaravelPassport

Cara melakukan penyepaduan Google Drive menggunakan PHP dan OAuth Cara melakukan penyepaduan Google Drive menggunakan PHP dan OAuth Jul 31, 2023 pm 04:41 PM

Cara melakukan penyepaduan GoogleDrive menggunakan PHP dan OAuth GoogleDrive ialah perkhidmatan storan awan popular yang membolehkan pengguna menyimpan fail dalam awan dan berkongsinya dengan pengguna lain. Melalui GoogleDriveAPI, kami boleh menggunakan PHP untuk menulis kod untuk disepadukan dengan GoogleDrive untuk melaksanakan operasi muat naik, muat turun, pemadaman dan lain-lain fail. Untuk menggunakan GoogleDriveAPI kita perlu membuat pengesahan melalui OAuth dan

Bagaimana untuk menggunakan OAuth2 dengan php? Bagaimana untuk menggunakan OAuth2 dengan php? Jun 01, 2023 am 08:31 AM

OAuth2 ialah protokol standard terbuka yang digunakan secara meluas untuk memberikan akses kepada sumber pengguna kepada aplikasi pihak ketiga, seperti rangkaian sosial seperti Google, Facebook dan Twitter, tanpa menghantar nama pengguna dan kata laluan terus kepada mereka. Dalam PHP, anda boleh menggunakan perpustakaan OAuth2 siap sedia untuk melaksanakan aliran OAuth2 dengan mudah atau anda boleh membina pustaka anda sendiri untuk melaksanakannya. Dalam artikel ini, kami akan menumpukan pada menggunakan pustaka OAuth2 siap pakai dan cara menggunakan OAut melaluinya

Kaedah dan pelaksanaan pengesahan OAuth2 dalam PHP Kaedah dan pelaksanaan pengesahan OAuth2 dalam PHP Aug 07, 2023 pm 10:53 PM

Kaedah dan pelaksanaan pengesahan OAuth2 dalam PHP Dengan pembangunan Internet, semakin banyak aplikasi perlu berinteraksi dengan platform pihak ketiga. Untuk melindungi privasi dan keselamatan pengguna, banyak platform pihak ketiga menggunakan protokol OAuth2 untuk melaksanakan pengesahan pengguna. Dalam artikel ini, kami akan memperkenalkan kaedah dan pelaksanaan pengesahan OAuth2 dalam PHP, dan melampirkan contoh kod yang sepadan. OAuth2 ialah rangka kerja kebenaran yang membolehkan pengguna membenarkan aplikasi pihak ketiga mengakses sumber mereka pada pembekal perkhidmatan lain tanpa menyebut

Pembangunan Laravel: Bagaimana untuk melaksanakan pengesahan API OAuth2 menggunakan Pasport Laravel? Pembangunan Laravel: Bagaimana untuk melaksanakan pengesahan API OAuth2 menggunakan Pasport Laravel? Jun 13, 2023 pm 11:13 PM

Apabila penggunaan API semakin meluas, melindungi keselamatan dan kebolehskalaan API menjadi semakin kritikal. OAuth2 telah menjadi protokol keselamatan API yang diterima pakai secara meluas yang membenarkan aplikasi mengakses sumber yang dilindungi melalui kebenaran. Untuk melaksanakan pengesahan OAuth2, LaravelPassport menyediakan cara yang mudah dan fleksibel. Dalam artikel ini, kita akan belajar cara melaksanakan pengesahan APIOAuth2 menggunakan LaravelPassport. Lar

Cara menggunakan PHP dan OAuth untuk penyepaduan log masuk QQ Cara menggunakan PHP dan OAuth untuk penyepaduan log masuk QQ Jul 31, 2023 pm 12:37 PM

Pengenalan kepada cara menggunakan PHP dan OAuth untuk penyepaduan log masuk QQ: Dengan pembangunan media sosial, semakin banyak laman web dan aplikasi mula menyediakan fungsi log masuk pihak ketiga untuk memudahkan pengguna mendaftar dan log masuk dengan cepat. Sebagai salah satu platform media sosial terbesar di China, QQ juga telah menjadi perkhidmatan log masuk pihak ketiga yang disediakan oleh banyak tapak web dan aplikasi. Artikel ini akan memperkenalkan langkah tentang cara menggunakan PHP dan OAuth untuk penyepaduan log masuk QQ, dengan contoh kod. Langkah 1: Daftar sebagai pembangun platform terbuka QQ Sebelum mula mengintegrasikan log masuk QQ, I

See all articles