michaelkaefer/oauth2-wrike

PHP League OAuth 2.0 客户端的 Wrike OAuth 2.0 支持

2.0.2 2022-04-10 09:43 UTC

This package is auto-updated.

Last update: 2024-09-10 15:06:37 UTC


README

本包为 PHP League 的 OAuth 2.0 客户端提供了 Wrike OAuth 2.0 支持。

注意:自 2.x 版本起,仅支持 Wrike 的 v4 API(早期版本支持 Wrike 的 v3 API)

安装

composer require michaelkaefer/oauth2-wrike

用法

$wrikeProvider = new \MichaelKaefer\OAuth2\Client\Provider\Wrike([
    'clientId'                => 'yourId',    // The client ID assigned to you by Wrike
    'clientSecret'            => 'yourSecret',   // The client password assigned to you by the provider
    'redirectUri'             => ''
]);

// Get authorization code
if (!isset($_GET['code'])) {
    // Get authorization URL
    $authorizationUrl = $wrikeProvider->getAuthorizationUrl();

    // Get state and store it to the session
    $_SESSION['oauth2state'] = $wrikeProvider->getState();

    // Redirect user to authorization URL
    header('Location: ' . $authorizationUrl);
    exit;
// Check for errors
} elseif (empty($_GET['state']) || (isset($_SESSION['oauth2state']) && $_GET['state'] !== $_SESSION['oauth2state'])) {
    if (isset($_SESSION['oauth2state'])) {
        unset($_SESSION['oauth2state']);
    }
    exit('Invalid state');
} else {
    // Get access token
    try {
        $accessToken = $wrikeProvider->getAccessToken(
            'authorization_code',
            [
                'code' => $_GET['code']
            ]
        );
    } catch (\League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) {
        exit($e->getMessage());
    }

    // Get resource owner
    try {
        $resourceOwner = $wrikeProvider->getResourceOwner($accessToken);
    } catch (\League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) {
        exit($e->getMessage());
    }
        
    // Now you can store the results to session ...
    $_SESSION['accessToken'] = $accessToken;
    $_SESSION['resourceOwner'] = $resourceOwner;
        
    // ... or do some API request
    $folderId = 'yourFolderId';
    $request = $wrikeProvider->getAuthenticatedRequest(
        'GET',
        'https://www.wrike.com/api/v3/folders/' . $folderId . '/folders',
        $accessToken
    );
    try {
        $response = $wrikeProvider->getParsedResponse($request);
    } catch (\League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) {
        exit($e->getMessage());
    }
    var_dump($response['data']);
}

更多信息请参阅 PHP League 的通用用法示例。

测试

$ ./vendor/bin/phpunit

许可证

MIT 许可证(MIT)。更多信息请参阅许可证文件