一个用PHP编写的GraphQL客户端,提供了非常简单但功能强大的查询生成类,使得与GraphQL服务器的交互变得非常简单。

1.11.0 2022-09-15 07:49 UTC

This package is auto-updated.

Last update: 2024-09-15 11:46:45 UTC


README

PHP SDK,提供了一种简单的方式与administrate平台进行交互。简化API授权并提供使用可用API的方法。

注意

为了使用这个库,请通过 support@getadministrate.com 联系我们,以便提供所需的凭据(clientId,clientSecret,实例URL和门户)。
或者
您可以在administrate 开发者环境中创建一个账户并测试您的集成。

安装

使用 composer

composer require administrate/phpsdk

用法

使用核心API进行授权 - 请求代码

require_once 'vendor/autoload.php';

use Administrate\PhpSdk\Oauth\Activate;

$activationParams = [
    'clientId' => '9juZ...Ig7U',     // Application ID
    'clientSecret' => 'd1RN...qt2h', // Application secret
    'instance' => 'https://YourInstanse.administrateapp.com/',     // Administrate instance to connect to
    'oauthServer' => 'https://auth.getadministrate.com/oauth',  // Administrate authorization endpoint
    'apiUri' => 'https://api.administrateapp.com/graphql', // Administrate Core API endpoint
    'redirectUri' => 'https://YourAppDomain/callback.php',  // Your app redirect URI to handle callbacks from api
];

// Create Activate Class instance
$activationObj = new Activate($activationParams);

// Get Authorization Code:
$urlToGoTo = $activationObj->getAuthorizeUrl();
示例URL输出

https://auth.getadministrate.com/oauth/authorize?response_type=code&client_id=9juZ...Ig7U&instance=https://YourInstanse.administrateapp.com/&redirect_uri=https://YourAppDomain/callback.php

上述代码将为您创建一个链接。
此链接将带您转到由params中提到的实例的登录屏幕,并将其重定向到您选择的URL设置的链接。
登录到administrate实例后,您将需要授权应用程序。
完成操作后,您将被重定向到回调URL。

请检查示例文件夹中的 oauth-activate.php

使用核心API进行授权 - 回调

示例回调URL

https://YourAppDomain/callback.php?code=9juZ...Ig7U

require_once 'vendor/autoload.php';

use Administrate\PhpSdk\Oauth\Activate;

//same activationParams as before
$activationObj = new Activate($activationParams);

// Handle Callback.
$response = $activationObj->handleAuthorizeCallback($_GET);
// This method will extract the code from the url
// and trigger sending an access token request using
// "fetchAccessTokens".
// The returned response is an multidimensional array
// with a status and body.
// In the body you have an access_token and a refresh_token
// You should use the access_token in your request header
// as Authorization Bearer in order for you to be granted access to the Core API.

// Or you can get the code from the callback URL
// and pass it as arg to the following method.
$response = $activationObj->fetchAccessTokens($code);

// Response Format (array):
{
    "status" => "success",
    "body" => {
        "access_token" => "sWNRpcf.....106vqR4",
        "expires_in"=> 3600,
        "token_type" => "Bearer",
        "scope" => "instance",
        "refresh_token" => "StEqsly.....V5nUhQd1i"
    }
}

请检查示例文件夹中的 oauth-callback.php

您应该将 access_token 保存下来,用于您的API调用。
您应该将 expires_in 保存下来,以计算 access_token 过期的时间并请求新的一个。
您应该将 refresh_token 保存下来,以便在 access_token 过期后再次获取一个新的 access_token

使用核心API进行授权 - 刷新令牌

require_once 'vendor/autoload.php';

use Administrate\PhpSdk\Oauth\Activate;

//same activationParams as before
$activationObj = new Activate($activationParams);

//$refresh_token value previously saved

// Request an new Access Token.
$response = $activate->refreshTokens($refresh_token);

// Response Format (array):
{
    "status" => "success",
    "body" => {
        "access_token" => "sWNRpcf.....106vqR4",
        "expires_in"=> 3600,
        "token_type" => "Bearer",
        "scope" => "instance",
        "refresh_token" => "StEqsly.....V5nUhQd1i"
    }
}

请检查示例文件夹中的 oauth-refreshToken.php

使用Weblink API进行授权

require_once 'vendor/autoload.php';

use Administrate\PhpSdk\Oauth\Activate;

$activationParams = [
    'oauthServer' => 'https://portal-auth.administratehq.com', // Administrate weblink authorization endpoint
    'uri' => 'https://weblink-api.administratehq.com/graphql', // Administrate Weblink endpoint
    'portal' => 'APPNAME.administrateweblink.com',
];

// Create Activate Class instance
$activationObj = new Activate($activationParams);

$response = $activationObj->getWeblinkCode();

// Response JSON Text:
{
    "portal_token": "Tcdg...DIY9o"
}

请检查示例文件夹中的 get-weblink-code.php

分类管理

您需要一个链接令牌才能列出类别

列出类别

require_once '/vendor/autoload.php';

use Administrate\PhpSdk\Category;

$params = [
    'oauthServer' => 'https://portal-auth.administratehq.com', // Administrate weblink authorization endpoint
    'uri' => 'https://weblink-api.administratehq.com/graphql', // Administrate Weblink endpoint
    'portal' => 'APPNAME.administrateweblink.com',
    'accessToken' => 'Tcdg...DIY9o',
];

$categoryObj = new Category($params);

$defaultFields = [
    'id',
    'name',
    'shortDescription',
    'parent'
];

$categoryId = "TGVh....YeTox";

//Get Single Category
$category = $categoryObj->load($categoryId, $defaultFields);

//Get all categories
$page = 1;
$perPage = 5;
$categories = $categoryObj->loadAll($page, $perPage, $defaultFields);

#The parameter "defaultFields" is optional only pass it if you want to change the fields

请检查 get-single-category.php
以及
get-multiple-categories.php 在示例文件夹中

课程管理

列出课程

require_once '/vendor/autoload.php';

use Administrate\PhpSdk\Course;

$params = [
    'oauthServer' => 'https://portal-auth.administratehq.com', // Administrate weblink authorization endpoint
    'uri' => 'https://weblink-api.administratehq.com/graphql',
    'portal' => 'APPNAME.administrateweblink.com',
    'accessToken' => 'Tcdg...DIY9o',
];

$CourseObj = new Course($params);

$defaultFields = [
    'id',
    'name',
    'description',
    'category',
    'imageUrl'
];
$courseId = "TGVh......eTox";

//Get single course
$course = $CourseObj->load($courseId, $defaultFields);

//get Courses with filters
$page = 1; //optional
$perPage = 6; //optional
$categoryId = "TGVh......eTox"; //optional
$searchKeyword = "test_keyword_here"; //optional
$categories = $courseObj->loadAll($page, $perPage, $categoryId, $searchkeyword, $defaultFields);

请检查 get-single-course.php
以及
get-multiple-courses.php 在示例文件夹中

贡献

欢迎提交拉取请求。对于重大更改,请首先创建一个问题来讨论您想要更改的内容。

请确保根据需要更新测试。

许可

MIT