administrate / phpsdk
一个用PHP编写的GraphQL客户端,提供了非常简单但功能强大的查询生成类,使得与GraphQL服务器的交互变得非常简单。
Requires
Requires (Dev)
- phpunit/phpunit: ^9
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输出
上述代码将为您创建一个链接。
此链接将带您转到由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 在示例文件夹中
贡献
欢迎提交拉取请求。对于重大更改,请首先创建一个问题来讨论您想要更改的内容。
请确保根据需要更新测试。