16 private $refreshToken;
33 $this->config = array_merge(array(
34 'always_issue_new_refresh_token' =>
false,
35 'unset_refresh_token_after_use' =>
true
41 if (isset(
$config[
'always_issue_new_refresh_token']) && !isset(
$config[
'unset_refresh_token_after_use'])) {
42 $this->config[
'unset_refresh_token_after_use'] =
$config[
'always_issue_new_refresh_token'];
50 return 'refresh_token';
55 if (!$request->
request(
"refresh_token")) {
56 $response->
setError(400,
'invalid_request',
'Missing parameter: "refresh_token" is required');
61 if (!$refreshToken = $this->storage->getRefreshToken($request->
request(
"refresh_token"))) {
62 $response->
setError(400,
'invalid_grant',
'Invalid refresh token');
67 if ($refreshToken[
'expires'] > 0 && $refreshToken[
"expires"] <
time()) {
68 $response->
setError(400,
'invalid_grant',
'Refresh token has expired');
74 $this->refreshToken = $refreshToken;
81 return $this->refreshToken[
'client_id'];
86 return isset($this->refreshToken[
'user_id']) ? $this->refreshToken[
'user_id'] :
null;
91 return isset($this->refreshToken[
'scope']) ? $this->refreshToken[
'scope'] :
null;
101 $issueNewRefreshToken = $this->config[
'always_issue_new_refresh_token'];
102 $unsetRefreshToken = $this->config[
'unset_refresh_token_after_use'];
103 $token = $accessToken->
createAccessToken($client_id, $user_id, $scope, $issueNewRefreshToken);
105 if ($unsetRefreshToken) {
106 $this->storage->unsetRefreshToken($this->refreshToken[
'refresh_token']);