日韩在线观看-日韩在线成人-日韩在线不卡视频-日韩在线不卡视频-国产精品99-国产精品99

Oauth

OAuth在"客戶端"與"服務提供商"之間,設置了一個授權層(authorization layer)。"客戶端"不能直接登錄"服務提供商",只能登錄授權層,以此將用戶與客戶端區分開來。"客戶端"登錄授權層所用的令牌(token),與用戶的密碼不同。用戶可以在登錄的時候,指定授權層令牌的權限范圍和有效期。

需要用戶自行補充oauth的認證流程,方便自己更加快速的接入。

安裝

請在EasySwoole根目錄下執行以下命令

composer require easyswoole/o-auth

詳情

根據Oauth協議,分別有如下調用方法。

  • 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方法后,此方法獲取原結果

示例代碼

微信

class WeiXin extends \EasySwoole\Http\AbstractInterface\Controller
{
    public function index()
    {
        $config = new \EasySwoole\OAuth\WeiXin\Config();
        $config->setAppId('appid');
        $config->setState('easyswoole');
        $config->setRedirectUri('redirect_uri');

        $oauth = new \EasySwoole\OAuth\WeiXin\OAuth($config);
        $url = $oauth->getAuthUrl();

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

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

        $config = new \EasySwoole\OAuth\WeiXin\Config();
        $config->setAppId('appid');
        $config->setSecret('secret');
        $config->setOpenIdMode(\EasySwoole\OAuth\WeiXin\Config::OPEN_ID); // 可設置UNION_ID 默認為OPEN_ID

        $oauth = new \EasySwoole\OAuth\WeiXin\OAuth($config);
        $accessToken = $oauth->getAccessToken('easyswoole', $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;

    }
}

QQ

class QQ extends \EasySwoole\Http\AbstractInterface\Controller
{
    public function index()
    {
        $config = new \EasySwoole\OAuth\QQ\Config();
        $config->setAppId('appid');
        $config->setState('easyswoole');
        $config->setRedirectUri('redirect_uri');

        $oauth = new \EasySwoole\OAuth\QQ\OAuth($config);
        $url = $oauth->getAuthUrl();

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

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

        $config = new \EasySwoole\OAuth\QQ\Config();
        $config->setAppId('appid');
        $config->setAppKey('appkey');
        $config->setRedirectUri('redirect_uri');
        $config->setOpenIdMode(\EasySwoole\OAuth\QQ\Config::OPEN_ID); // 可設置UNION_ID 默認為OPEN_ID

        $oauth = new \EasySwoole\OAuth\QQ\OAuth($config);
        $accessToken = $oauth->getAccessToken('easyswoole', $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;

    }
}

微博

class Weibo extends \EasySwoole\Http\AbstractInterface\Controller
{
    public function index()
    {
        $config = new \EasySwoole\OAuth\Weibo\Config();
        $config->setClientId('clientid');
        $config->setState('easyswoole');
        $config->setRedirectUri('redirect_uri');

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

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

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

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

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

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

        if (!$oauth->validateAccessToken($accessToken)) echo 'access_token 驗證失敗!' . PHP_EOL;
    }
}

支付寶

class AliPay extends \EasySwoole\Http\AbstractInterface\Controller
{
    public function index()
    {
        $config = new \EasySwoole\OAuth\AliPay\Config();
        $config->setState('easyswoole');
        $config->setAppId('appid');
        $config->setRedirectUri('redirect_uri');

        // 使用沙箱環境測試開發的時候 把OAuth的源碼文件里面的 API_DOMAIN 和 AUTH_DOMAIN 進行修改
        $oauth = new \EasySwoole\OAuth\AliPay\OAuth($config);
        $url = $oauth->getAuthUrl();
        return $this->response()->redirect($url);
    }

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

        $config = new \EasySwoole\OAuth\AliPay\Config();
        $config->setAppId('appid');
//        $config->setAppPrivateKey('私鑰');
        $config->setAppPrivateKeyFile('私鑰文件'); // 私鑰文件(非遠程) 此方法與上個方法二選一

        $oauth = new \EasySwoole\OAuth\AliPay\OAuth($config);
        $accessToken = $oauth->getAccessToken('easyswoole', $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());
    }
}

Github

class Github extends \EasySwoole\Http\AbstractInterface\Controller
{
    public function index()
    {
        $config = new \EasySwoole\OAuth\Github\Config();
        $config->setClientId('clientid');
        $config->setRedirectUri('redirect_uri');
        $config->setState('easyswoole');
        $oauth = new \EasySwoole\OAuth\Github\OAuth($config);
        $this->response()->redirect($oauth->getAuthUrl());
    }

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

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

        if (!$oauth->validateAccessToken($accessToken)) echo 'access_token 驗證失敗!' . PHP_EOL;
    }
}

Gitee

class Gitee extends \EasySwoole\Http\AbstractInterface\Controller
{
    public function index()
    {
        $config = new \EasySwoole\OAuth\Gitee\Config();
        $config->setState('easyswoole');
        $config->setClientId('clientid');
        $config->setRedirectUri('redirect_uri');
        $oauth = new \EasySwoole\OAuth\Gitee\OAuth($config);
        $this->response()->redirect($oauth->getAuthUrl());
    }

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

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

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

        if (!$oauth->validateAccessToken($accessToken)) echo 'access_token 驗證失敗!' . PHP_EOL;
        var_dump($oauth->getAccessTokenResult());
    }
}
主站蜘蛛池模板: 南来北往分集剧情| 猫鼠| 白洁少妇董汐星空传媒影视| 南海长城 电影| 《暗恋电影》在线观看| 西海情歌歌词全文| i性感美女视频| 许戈辉个人资料简介| 金福南事件始末在线观看高清影评| 张天爱出生于哪年?| 干了一个月的家具导购| 午夜魅影| 墓碑样式图片| 高堡奇人第二季| 复仇意大利| 噜啊噜在线视频| 尹馨演过的三部电影| 房东电影| 八年级上册英语课文| 大兵相声小品蠢得死| 美人天下| 少年王演员表全部| 乔治爸爸去哪儿| 五年级必考歇后语大全| 秀人网美女屋| 美丽的邂逅| 电车摩女| 流浪地球海报| 暴露视频| 猛女| 李彦萱| 《五十度灰》| 日韩在线激情| 成龙游戏| 太卷了正确答案| 叶子楣伦理| 命运航班| 《特种兵之霹雳火》| 企鹅头像| 王馨可| 韩国女车模|