diff --git a/src/Provider/AbstractProvider.php b/src/Provider/AbstractProvider.php index 4e101ec..cf5ff6c 100644 --- a/src/Provider/AbstractProvider.php +++ b/src/Provider/AbstractProvider.php @@ -85,7 +85,7 @@ abstract class AbstractProvider implements ProviderInterface public function getAuthorizationUrl($options = array()) { - $this->state = md5(uniqid(rand(), true)); + $this->state = isset($options['state']) ? $options['state'] : md5(uniqid(rand(), true)); $params = array( 'client_id' => $this->clientId, diff --git a/test/src/Provider/AbstractProviderTest.php b/test/src/Provider/AbstractProviderTest.php index c17e419..aff0de2 100644 --- a/test/src/Provider/AbstractProviderTest.php +++ b/test/src/Provider/AbstractProviderTest.php @@ -33,4 +33,12 @@ class AbstractProviderTest extends \PHPUnit_Framework_TestCase $grant = new \StdClass; $this->provider->getAccessToken($grant, array('invalid_parameter' => 'none')); } + + public function testAuthorizationUrlStateParam() + { + $this->assertContains('state=XXX', $this->provider->getAuthorizationUrl([ + 'state' => 'XXX' + ])); + } + }