diff --git a/CHANGELOG.md b/CHANGELOG.md index 73246e85..71ce9e29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # OAuth 2.0 Client Changelog +## x.x.x + +* Send scopes with access token request [#1029](https://github.com/thephpleague/oauth2-client/issues/1029) + ## 2.7.0 _Released: 2023-04-16_ diff --git a/src/Provider/AbstractProvider.php b/src/Provider/AbstractProvider.php index 5aaeb8fc..91caa58f 100644 --- a/src/Provider/AbstractProvider.php +++ b/src/Provider/AbstractProvider.php @@ -620,6 +620,15 @@ public function getAccessToken($grant, array $options = []) { $grant = $this->verifyGrant($grant); + if (empty($options['scope'])) { + $options['scope'] = $this->getDefaultScopes(); + } + + if (is_array($options['scope'])) { + $separator = $this->getScopeSeparator(); + $options['scope'] = implode($separator, $options['scope']); + } + $params = [ 'client_id' => $this->clientId, 'client_secret' => $this->clientSecret, diff --git a/test/src/Grant/PasswordTest.php b/test/src/Grant/PasswordTest.php index f177eb86..85972fc0 100644 --- a/test/src/Grant/PasswordTest.php +++ b/test/src/Grant/PasswordTest.php @@ -20,7 +20,8 @@ protected function getParamExpectation() return !empty($body['grant_type']) && $body['grant_type'] === 'password' && !empty($body['username']) - && !empty($body['password']); + && !empty($body['password']) + && !empty($body['scope']); }; } diff --git a/test/src/Provider/AbstractProviderTest.php b/test/src/Provider/AbstractProviderTest.php index 98c77c2d..6f388a04 100644 --- a/test/src/Provider/AbstractProviderTest.php +++ b/test/src/Provider/AbstractProviderTest.php @@ -628,7 +628,7 @@ public function testGetAccessToken($method) ->once() ->with( ['client_id' => 'mock_client_id', 'client_secret' => 'mock_secret', 'redirect_uri' => 'none'], - ['code' => 'mock_authorization_code'] + ['code' => 'mock_authorization_code', 'scope' => 'test'] ) ->andReturn([]);