helpscout / api-laravel
服务提供者和门面,用于将 Help Scout Mailbox API 2.0 与 Laravel 和 Lumen 集成
Requires
- php: ^7.3|^8.0
- helpscout/api: ~3.0
- illuminate/support: ^5.6|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.3
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^8.0
Suggests
- laravel/framework: To test the Laravel bindings
- laravel/lumen-framework: To test the Lumen bindings
README
此包包含用于与 Laravel 和 Lumen 一起使用的服务提供者和门面。
安装
可以通过在项目的 composer.json
中要求 helpscout/api-laravel
包,使用 Composer 安装 Help Scout 服务提供者。
{ "require": { "helpscout/api-laravel": "~2.0" } }
然后运行 composer update
php composer.phar update
要使用 Help Scout 服务提供者,您必须在启动应用程序时注册提供者。
Lumen
在 Lumen 中,在 bootstrap/app.php
中找到 Register Service Providers
并注册 Help Scout 服务提供者。
$app->register(HelpScout\Laravel\HelpScoutServiceProvider::class);
Laravel
在 Laravel 中,在 config/app.php
中找到 providers
键并注册 Help Scout 服务提供者。
'providers' => [ // ... HelpScout\Laravel\HelpScoutServiceProvider::class, ]
在 config/app.php
中找到 aliases
键并添加 Help Scout 门面别名。
'aliases' => [ // ... 'HelpScout' => HelpScout\Laravel\HelpScoutFacade::class, ]
配置
此包提供了两种从服务提供者内部配置客户端的方式。您可以使用 client_credentials
身份验证类型或使用 legacy_token
身份验证类型。
客户端凭据流程
client_credentials
身份验证类型使用与 Mailbox API 2.O 身份验证页面 上描述的同名 OAuth2 授予。
使用此方法时,如果 API 客户端在请求时没有 access_token
,它将向 Mailbox 2.0 的 https://api.helpscout.net/v2/oauth2/token
端点发出预请求以检索该令牌。之后对 API 的每次请求都将使用在第一次请求中检索到的 access_token
。有关 client_credentials
授权流程的更多详细信息,请参阅 此页面。
要使用此授权类型,设置以下环境变量
HS_AUTH_TYPE=client_credentials
HS_APP_ID=your-app-id
HS_APP_SECRET=your-app-secret
旧版凭据流程
为了简化旧版应用程序到新 API 的迁移,API 客户端使用 过渡服务 交换旧的 clientId
和 apiKey
以获取 access_token
。
与上述 client_credentials
流程一样,如果 API 客户端在尝试 API 调用时没有 access_token
,它将向过渡服务发出预请求以交换旧凭据以获取有效的 access_token
。
要使用此授权类型,设置以下环境变量
HS_AUTH_TYPE=legacy_credentials
HS_CLIENT_ID=your-client-id
HS_API_KEY=your-api-key
在请求之间更改凭据
如果您在创建客户端时没有提供凭据,您必须提供以下两种身份验证类型之一的有效凭据或 access_token
。您可以通过以下方式使用客户端的具体实例来完成此操作
$client = app('helpscout'); $client->useClientCredentials($appId, $appSecret); $webhooks = $client->webhooks()->list();
要自定义配置文件,请使用 Artisan 发布包配置。
php artisan vendor:publish --provider="HelpScout\Laravel\HelpScoutServiceProvider" // or php artisan vendor:publish --tag="helpscout"
这些设置可以在生成的 config/helpscout.php
配置文件中找到。
使用方法
本服务提供商提供多种方法在您的应用中使用API客户端。您可以通过使用helpscout
别名、指定Helpscout\Api\ApiClient
类名,或者在一个类构造函数或方法签名中类型提示客户端来从容器中解析客户端实例。如果您已按照上述方式配置了客户端,则无需进一步配置。
使用完整类名从容器中获取客户端。
$client = app(\HelpScout\Api\ApiClient::class); $webhooks = $client->webhooks()->list();
使用别名从容器中获取客户端。
$client = app('helpscout'); $webhooks = $client->webhooks()->list();
或者,在构造函数或方法签名中类型提示客户端。
use HelpScout\Api\ApiClient; use HelpScout\Api\Entity\PagedCollection; class Foo { private $api; public function __construct(ApiClient $api) { $this->api = $api; } public function getWebhooks(): PagedCollection { return $this->api->webhooks()->list(); } }
此外,您还可以以类似的方式从容器中请求和解析特定的API端点。有关端点和它们别名的列表,请参阅API客户端库中的ApiClient::AVAILABLE_ENDPOINTS
。与ApiClient
类相同,容器将返回一个完全配置的端点,只要您在config/helpscout.php
文件中指定了认证类型和适当的凭据,即可用于使用。
use HelpScout\Api\Webhooks\WebhooksEndpoint; use HelpScout\Api\Entity\PagedCollection; class Foo { private $endpoint; public function __construct(WebhooksEndpoint $endpoint) { $this->endpoint = $endpoint; } public function getHsWebhooks(): PagedCollection { return $this->endpoint->list(); } } // usage $foo = app(Foo::class); $webhooks = $foo->getHsWebhooks(); // using the endpoints registered alias... $webhookEndpoint = app('hs.webhooks'); $webhooks = $webhookEndpoint->list();
如果HelpScout
外观在应用程序配置的aliases
部分注册,您还可以使用以下技术。
$webhooks = HelpScout::webhooks()->list();