PHPackages                             zhanxin/o-auth - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. zhanxin/o-auth

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

zhanxin/o-auth
==============

zx-center oauth o-auth

02PHP

Since Dec 17Pushed 4y ago1 watchersCompare

[ Source](https://github.com/caserwiki/OAuth)[ Packagist](https://packagist.org/packages/zhanxin/o-auth)[ RSS](/packages/zhanxin-o-auth/feed)WikiDiscussions main Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

Oauth
=====

[](#oauth)

介绍
--

[](#介绍)

第三方登录授权的SDK。

安装
--

[](#安装)

```
composer require zhanxin/o-auth

```

说明
--

[](#说明)

公共方法：

- `getAuthUrl()` 获取授权地址
- `getAccessToken($storeState = null, $state = null, $code = null)` 获取AccessToken（只返回access\_token）
- `getAccessTokenResult()` 执行`getAccessToken`方法后，此方法获取原结果
- `getUserInfo(string $accessToken)` 获取用户信息
- `validateAccessToken(string $accessToken)` 验证token是否有效
- `refreshToken(string $refreshToken = null)` 刷新token 返回`bool`
- `getRefreshTokenResult()` 执行`refreshToken`方法后，此方法获取原结果

使用
--

[](#使用)

微信/QQ:

```
class Wechat
{
    public function index()
    {
        $config = new Zx\OAuth\Wechat\Config();
        $config->setAppId('appid');
        $config->setState('state');
        $config->setRedirectUri('redirect_uri');

        $oauth = new Zx\OAuth\Wechat\OAuth($config);
        $url = $oauth->getAuthUrl();

        return $this->response()->redirect($url);
    }

    public function callback()
    {
        $params = $this->request()->getQueryParams();

        $config = new Zx\OAuth\Wechat\Config();
        $config->setAppId('appid');
        $config->setSecret('secret');

        $oauth = new Zx\OAuth\Wechat\OAuth($config);
        try {
            $accessToken = $oauth->getAccessToken('state', $params['state'], $params['code']);
            $refreshToken = $oauth->getAccessTokenResult()['refresh_token'];

            $userInfo = $oauth->getUserInfo($accessToken);
            var_dump($userInfo);

            if (!$oauth->validateAccessToken($accessToken)) echo 'access_token 验证失败！' . PHP_EOL;

            if (!$oauth->refreshToken($refreshToken)) echo 'access_token 续期失败！' . PHP_EOL;
        } catch (Exception $e) {
        }
    }
}
```

微博:

```
class Weibo
{
    public function index()
    {
        $config = new Zx\OAuth\Weibo\Config();
        $config->setClientId('clientid');
        $config->setState('state');
        $config->setRedirectUri('redirect_uri');

        $oauth = new Zx\OAuth\Weibo\OAuth($config);
        $url = $oauth->getAuthUrl();

        return $this->response()->redirect($url);
    }

    public function callback()
    {
        $params = $this->request()->getQueryParams();

        $config = new Zx\OAuth\Weibo\Config();
        $config->setClientId('clientid');
        $config->setClientSecret('secret');
        $config->setRedirectUri('redirect_uri');

        $oauth = new Zx\OAuth\Weibo\OAuth($config);
        try {
            $accessToken = $oauth->getAccessToken('state', $params['state'], $params['code']);

            $userInfo = $oauth->getUserInfo($accessToken);
            var_dump($userInfo);

            if (!$oauth->validateAccessToken($accessToken)) echo 'access_token 验证失败！' . PHP_EOL;
        } catch (Exception $e) {
        }
    }
}
```

支付宝:

```
class alipay
{
    public function index()
    {
        $config = new Zx\OAuth\alipay\Config();
        $config->setState('state');
        $config->setAppId('appid');
        $config->setRedirectUri('redirect_uri');

        $oauth = new Zx\OAuth\alipay\OAuth($config);
        $url = $oauth->getAuthUrl();
        return $this->response()->redirect($url);
    }

    public function callback()
    {
        $params = $this->request()->getQueryParams();

        $config = new Zx\OAuth\alipay\Config();
        $config->setAppId('appid');
        $config->setAppPrivateKey('私钥');

        $oauth = new Zx\OAuth\alipay\OAuth($config);
        try {
            $accessToken = $oauth->getAccessToken('state', $params['state'], $params['auth_code']);
            $refreshToken = $oauth->getAccessTokenResult()['alipay_system_oauth_token_response']['refresh_token'];

            $userInfo = $oauth->getUserInfo($accessToken);
            var_dump($userInfo);

            if (!$oauth->validateAccessToken($accessToken)) echo 'access_token 验证失败！' . PHP_EOL;
            var_dump($oauth->getAccessTokenResult());

            if (!$oauth->refreshToken($refreshToken)) echo 'access_token 续期失败！' . PHP_EOL;
            var_dump($oauth->getRefreshTokenResult());
        } catch (Exception $e) {
        }
    }
}
```

GitHub:

```
class Github
{
    public function index()
    {
        $config = new Zx\OAuth\Github\Config();
        $config->setClientId('clientid');
        $config->setRedirectUri('redirect_uri');
        $config->setState('state');
        $oauth = new Zx\OAuth\Github\OAuth($config);
        $this->response()->redirect($oauth->getAuthUrl());
    }

    public function callback()
    {
        $params = $this->request()->getQueryParams();
        $config = new Zx\OAuth\Github\Config();
        $config->setClientId('clientid');
        $config->setClientSecret('secret');
        $config->setRedirectUri('redirect_uri');

        $oauth = new Zx\OAuth\Github\OAuth($config);
        try {
            $accessToken = $oauth->getAccessToken('state', $params['state'], $params['code']);
            $userInfo = $oauth->getUserInfo($accessToken);
            var_dump($userInfo);

            if (!$oauth->validateAccessToken($accessToken)) echo 'access_token 验证失败！' . PHP_EOL;
        } catch (Exception $e) {
        }
    }
}
```

码云:

```
class Gitee
{
    public function index()
    {
        $config = new Zx\OAuth\Gitee\Config();
        $config->setState('state');
        $config->setClientId('clientid');
        $config->setRedirectUri('redirect_uri');
        $oauth = new Zx\OAuth\Gitee\OAuth($config);
        $this->response()->redirect($oauth->getAuthUrl());
    }

    public function callback()
    {
        $params = $this->request()->getQueryParams();

        $config = new Zx\OAuth\Gitee\Config();
        $config->setClientId('client_id');
        $config->setClientSecret('secret');
        $config->setRedirectUri('redirect_uri');

        $oauth = new Zx\OAuth\Gitee\OAuth($config);
        try {
            $accessToken = $oauth->getAccessToken('state', $params['state'], $params['code']);
            $userInfo = $oauth->getUserInfo($accessToken);
            var_dump($userInfo);

            if (!$oauth->validateAccessToken($accessToken)) echo 'access_token 验证失败！' . PHP_EOL;
            var_dump($oauth->getAccessTokenResult());
        } catch (Exception $e) {
        }
    }
}
```

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity2

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity28

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/52273420?v=4)[昝薪](/maintainers/caserwiki)[@caserwiki](https://github.com/caserwiki)

---

Top Contributors

[![caserwiki](https://avatars.githubusercontent.com/u/52273420?v=4)](https://github.com/caserwiki "caserwiki (4 commits)")

### Embed Badge

![Health badge](/badges/zhanxin-o-auth/health.svg)

```
[![Health](https://phpackages.com/badges/zhanxin-o-auth/health.svg)](https://phpackages.com/packages/zhanxin-o-auth)
```

###  Alternatives

[kartik-v/yii2-password

Useful password strength validation utilities for Yii Framework 2.0

761.3M17](/packages/kartik-v-yii2-password)[vitalybaev/laravel5-dkim

Laravel 5/6 package for signing outgoing messages with DKIM.

3163.1k](/packages/vitalybaev-laravel5-dkim)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
