by commerceguys

commerceguys / guzzle-oauth2-plugin

Provides an OAuth2 plugin (subscriber) for Guzzle

123 Stars 63 Forks Last release: over 5 years ago (v2.1.0) MIT License 52 Commits 8 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:


Provides an OAuth2 plugin (subscriber) for Guzzle.

Build Status Code Coverage

Version 2.x (on the

branch) is intended for Guzzle 5:
        "commerceguys/guzzle-oauth2-plugin": "~2.0"

Guzzle 3 compatibility continues in the


        "commerceguys/guzzle-oauth2-plugin": "~1.0"


  • Acquires access tokens via one of the supported grant types (code, client credentials, user credentials, refresh token). Or you can set an access token yourself.
  • Supports refresh tokens (stores them and uses them to get new access tokens).
  • Handles token expiration (acquires new tokens and retries failed requests).

Running the tests

First make sure you have all the dependencies in place by running

composer install --prefer-dist
, then simply run


use GuzzleHttp\Client;
use CommerceGuys\Guzzle\Oauth2\GrantType\RefreshToken;
use CommerceGuys\Guzzle\Oauth2\GrantType\PasswordCredentials;
use CommerceGuys\Guzzle\Oauth2\Oauth2Subscriber;

$base_url = '';

$oauth2Client = new Client(['base_url' => $base_url]);

$config = [ 'username' => '[email protected]', 'password' => 'test password', 'client_id' => 'test-client', 'scope' => 'administration', ];

$token = new PasswordCredentials($oauth2Client, $config); $refreshToken = new RefreshToken($oauth2Client, $config);

$oauth2 = new Oauth2Subscriber($token, $refreshToken);

$client = new Client([ 'defaults' => [ 'auth' => 'oauth2', 'subscribers' => [$oauth2], ], ]);

$response = $client->get('');


// Use $oauth2->getAccessToken(); and $oauth2->getRefreshToken() to get tokens // that can be persisted for subsequent requests.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.