itcolima/siitec-api-client

此包最新版本(v0.1.86)没有可用的许可信息。

PHP ITColima SIITEC API 客户端


README

安装

可以使用以下命令通过 composer 安装此包:

composer require itcolima/siitec-api-client

初始化

通过类 ITColima\SiitecApi\SiitecApi 初始化 SIITEC API。

use ITColima\SiitecApi\SiitecApi;

// Carga manual de las variables de entorno
putenv('SIITEC_API_CLIENT_ID', '<client_id>');
putenv('SIITEC_API_CLIENT_SECRET', '<client_secret>');

$siitecApi = new SiitecApi();

自动加载环境变量

如果使用可以加载 .env 文件的框架或库,SIITEC API 可以自动加载环境变量。在文件中应包含以下内容:

# ===================================
# SIITEC API SETTINGS
# ===================================
SIITEC_API_CLIENT_ID = '<client_id>'
SIITEC_API_CLIENT_SECRET = '<client_secret>'

注意

<client_id><client_secret> 参数的值由科利马理工学院计算中心提供。

登录

SIITEC API 库的一个特殊功能是允许访问每个用户的资源,通过登录来识别用户。

SIITEC API 的登录使用 OAuth 2.0 授权框架进行,该框架允许使用访问令牌(Access Token)获取受保护资源的访问权限,并允许持续操作。

这些登录过程需要在客户端(应用)和 SIITEC 服务器之间进行复杂的 HTTP 请求交互和交换。该复杂的机制可以通过库中的函数简化,允许用户更多地关注功能而非结构。

登录功能实现

use ITColima\SiitecApi\SiitecApi;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

class OAuth2Controller
{
    /**
     * Recibe la solicitud del cliente para iniciar proceso de inicio de sesión.
     *
     * Ruta: GET /oauth2[/]
     */
    public function indexGet(): ResponseInterface
    {
        $siitecApi = new SiitecApi();

        if ($api->isLoggedIn()) {
            return SiitecApi::redirectTo(SiitecApi::siteUrl());
        }

        $response = $siitecApi->login(
            SiitecApi::siteUrl('/oauth2/login_handler'),
            SiitecApi::siteUrl('/oauth2/logout')
        );
        return $response;
    }

    /**
     * Recibe la respuesta del servidor de autorización con el código de
     * autorización o error, según corresponda el caso.
     *
     * Ruta: GET /oauth2/callback[/]
     */
    public function callbackGet(ServerRequestInterface $request): ResponseInterface
    {
        $siitecApi = new SiitecApi();
        $redirUri = $siitecApi->handleLogin($request);
        return SiitecApi::redirectTo($redirUri);
    }

    /**
     * Destruye la sesión y hace la solicitud para cancelar la sesión activa del
     * usuario en SIITEC.
     *
     * Ruta: GET /logout[/]
     */
    public function logoutGet(ServerRequestInterface $request): ResponseInterface
    {
        $siitecApi = new SiitecApi();
        $response = $siitecApi->handleLogout($request);
        session_destroy();
        return SiitecApi::emitResponse($response);
    }
}

注意

实现方式可能因使用的框架和开发技术而异。

调试

默认情况下,API 有一些初始化地址,这些地址可以修改以进行调试和在本地环境中执行。

# =====================================
# SIITEC API DEBUGGING
# =====================================
SIITEC_HOME  = 'https://siitec.colima.tecnm.mx'
SIITEC_API   = 'https://siitec.colima.tecnm.mx/api/index.php'

特定环境变量

作为替代,可以使用特定环境变量进行认证机制,尽管这仅适用于特定调试,不建议广泛使用。

# =====================================
# SIITEC API DEBUGGING
# =====================================
SIITEC_API_AUTHORIZE_ENDPOINT = 'https://siitec.colima.tecnm.mx/index.php/oauth2/authorize'
SIITEC_API_TOKEN_ENDPOINT     = 'https://siitec.colima.tecnm.mx/index.php/oauth2/token'
SIITEC_API_RESOURCES_ENDPOINT = 'https://siitec.colima.tecnm.mx/api/index.php'