itcolima/siitec2-api-client

此包已被弃用且不再维护。作者建议使用 itcolima/siitec-api-client 包。
此包的最新版本(v0.1.31)没有可用的许可证信息。

PHP ITColima SIITEC 2 API 客户端

v0.1.31 2021-07-12 16:17 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'