itcolima / siitec2-api-client
PHP ITColima SIITEC 2 API 客户端
Requires
- francerz/api-client: ^0.2
- francerz/http: ^0.3
- francerz/oauth2-client: ^0.2
- psr/http-client: ^1.0
Requires (Dev)
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2021-07-19 19:37:41 UTC
README
安装
可以通过以下命令使用 composer 安装此包:
composer require itcolima/siitec2-api-client
初始化
初始化 SIITEC 2 API 的方法是使用 ITColima\Siitec2\Api\Siitec2Api
类。
use ITColima\Siitec2\Api\Siitec2Api; // Carga manual de las variables de entorno $_ENV['SIITEC2_API_CLIENT_ID'] = '<client_id>'; $_ENV['SIITEC2_API_CLIENT_SECRET'] = '<client_secret>'; $api = new Siitec2Api();
自动加载环境变量
$_ENV
SIITEC 2 API 可以在使用能够从.env
文件加载环境变量的框架或库时自动加载环境变量。文件中的内容应如下所示# Credenciales de API de SIITEC 2 SIITEC2_API_CLIENT_ID = '<client_id>' SIITEC2_API_CLIENT_SECRET = '<client_secret>'
注意
<client_id>
和<client_secret>
参数的值由科利马理工学院计算中心提供。
登录
SIITEC 2 API 库的一个特殊功能是允许访问每个用户自己的资源,通过登录来识别用户。
SIITEC 2 API 的登录是通过 OAuth 2.0 授权框架进行的,该框架允许使用访问令牌(Access Token)获取受保护资源的访问权限,并允许持续操作。
这些登录过程需要客户端(应用程序)和 SIITEC 2 服务器之间复杂的 HTTP 请求交互。这个复杂的机制可以通过库中的函数简化,从而减少对结构的关注,更多地关注功能。
使用示例
登录调用
登录需要有一个触发动作的文件或函数。以下代码展示了如何向 SIITEC 2 发送登录请求。
<?php /** * Archivo: login.php * Establecer la URI como manejadora del inicio de sesión. */ // Cargar liberías use ITColima\Siitec2\Api\Siitec2Api; // Cargar autoloader de composer. require_once __DIR__.'/vendor/autoload.php'; // Para un correcto funcionamiento de la API se requiere contar con sesiones. session_start(); // Inicializar instancia de API $api = new Siitec2Api(); // Verificar si hay sesión iniciada, si es así redirigir a donde señale el // parámetro `redir` de la URL o a "principal.php" if ($api->getPerfil()) { http_response_code(307); header('Location', $api->getRedir('https://www.ejemplo.com/principal.php')); return; } // Estableceer URL donde se recibirá el inicio de sesión de SIITEC 2 $api->setLoginHandlerUri('https://www.ejemplo.com/login_handler.php'); // Realizar inicio de sesión con $scopes y $csrfKey opcionales. $api->performLogin();
变体 上述代码是为使用纯 PHP 的应用程序设计的,没有使用支持基本功能的框架或库。以下是一些常见的代码变体
- 框架可能自动加载 composer 的 autoloader。
- 重定向可能会根据框架而变化,以下是一些不同框架的示例
- CodeIgniter 3
if ($api->getPerfil()) { redirect($api->getRedir(site_url('principal'))); } $api->setLoginHandlerUri(site_url('login_handler')); $api->performLogin();- CodeIgniter 4
if ($api->getPerfil()) { return redirect()->to($api->getRedir(site_url('principal'))); } $api->setLoginHandlerUri(site_url('login_handler')); return CodeIgniter4::outputResponsePsr7($this->response, $api->getLoginRequest());要使用
Francerz\Utils\Frameworks\CodeIgniter4
,需要安装francerz/utils
包。
处理登录响应
一旦触发动作,服务器将请求用户授权访问,并获取结果后,将结果返回给登录处理器的 URI。
<?php /** * Archivo: login_handler.php * Manejar la respuesta del servidor al iniciar sesión. */ // Cargar liberías use ITColima\Siitec2\Api\Siitec2Api; // Cargar autoloader de composer. require_once __DIR__.'/vendor/autoload.php'; // Para un correcto funcionamiento de la API se requiere contar con sesiones. session_start(); // Inicializar instancia de API $api = new Siitec2Api(); // Capturar la petición entrante y permitir a la librería gestionar el proceso. $api->handleLogin(); // Una vez concluído el inicio de sesión, redirigir a principal.php http_response_code(307); header('Location', $api->getRedir('https://www.ejemplo.com/principal.php'));
访问已识别用户的资料
用户登录时预期的一个基本行为是识别已登录系统的用户。为了访问这些数据,API会自动从服务器恢复并临时存储在会话期间。
<?php /** * Archivo: perfil.php */ // Cargar librerías use ITColima\Siitec2\Api\Siitec2Api;
调试
默认情况下,API关联了初始化地址,这些地址可以修改用于调试和本地执行。
SIITEC2_API_AUTHORIZE_ENDPOINT = 'https://siitec.colima.tecnm.mx/index.php/oauth2/authorize' SIITEC2_API_TOKEN_ENDPOINT = 'https://siitec.colima.tecnm.mx/index.php/oauth2/token' SIITEC2_API_RESOURCE_ENDPOINT = 'https://siitec.colima.tecnm.mx/api/index.php'