diff --git a/lib/oauthlib.php b/lib/oauthlib.php index f91a9f98daa..7a657eb7286 100644 --- a/lib/oauthlib.php +++ b/lib/oauthlib.php @@ -511,14 +511,22 @@ abstract class oauth2_client extends curl { public function get_login_url() { $callbackurl = self::callback_url(); + $defaultparams = [ + 'client_id' => $this->clientid, + 'response_type' => 'code', + 'redirect_uri' => $callbackurl->out(false), + 'state' => $this->returnurl->out_as_local_url(false), + + ]; + if (!empty($this->scope)) { + // The scope should only be included if a value is set. + // If none provided, the server MUST process the request and provide an appropriate documented response. + // See spec https://tools.ietf.org/html/rfc6749#section-3.3 + $defaultparams['scope'] = $this->scope; + } + $params = array_merge( - [ - 'client_id' => $this->clientid, - 'response_type' => 'code', - 'redirect_uri' => $callbackurl->out(false), - 'state' => $this->returnurl->out_as_local_url(false), - 'scope' => $this->scope, - ], + $defaultparams, $this->get_additional_login_parameters() );