bybrand / oauth2-teamwork
PHP League OAuth 2.0 客户端的 Teamwork 提供者
v1.0.0
2021-09-16 18:50 UTC
Requires
- league/oauth2-client: ^2.6
Requires (Dev)
- mockery/mockery: ^1.3
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-17 01:06:36 UTC
README
此软件包为PHP League的OAuth 2.0 客户端提供 Teamwork OAuth 2.0 支持。与 Teamwork API (v2) 一起工作。最初,此模块用于Bybrand与 Teamwork Desk 的集成,并已投入生产。
完整文档可以在Teamwork 文档中查看。您还可以阅读应用登录流程。
安装
composer require bybrand/oauth2-teamwork
用法
这是一份获取令牌的说明,然后将其保存在您的数据库中以供将来请求使用。
use Bybrand\OAuth2\Client\Provider\Teamwork as ProviderTeamwork;
use Bybrand\OAuth2\Client\OptionProvider\JsonAuthOptionProvider;
$params = $_GET;
$provider = new ProviderTeamwork([
'clientId' => 'key-id',
'clientSecret' => 'secret-key',
'redirectUri' => 'your-url-redirect'
]);
// Need to Json authentication and not the default x-www-form-urlencoded
$provider->setOptionProvider(new JsonAuthOptionProvider)
if (!isset($params['code']) or empty($params['code'])) {
// If we don't have an authorization code then get one
$authorizationUrl = $provider->getAuthorizationUrl();
// Get state and store it to the session
$_SESSION['oauth2state'] = $provider->getState();
header('Location: '.$authorizationUrl);
exit;
// Check given state against previously stored one to mitigate CSRF attack
} elseif (empty($params['state']) || ($params['state'] !== $_SESSION['oauth2state'])) {
unset($_SESSION['oauth2state']);
// Set error and redirect.
echo 'Invalid stage';
} else {
try {
// Try to get an access token (using the authorization code grant)
$token = $provider->getAccessToken('client_credentials', [
'code' => $params['code']
]);
} catch (\Exception $e) {
// Error, make redirect or message.
}
// Use this to interact with an API on the users behalf
echo $token->getToken();
// Basic information about the installation.
$installation = $token->getValues()['installation'];
}
请参阅 PHP League 的一般用法示例以获取更多信息。
刷新令牌
Teamwork 令牌不会过期,也不需要刷新。
测试
bash
$ ./vendor/bin/phpunit
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅许可证文件。