You are here

public function OpenIDConnectClientBase::retrieveUserInfo in OpenID Connect / OAuth client 2.x

Same name and namespace in other branches
  1. 8 src/Plugin/OpenIDConnectClientBase.php \Drupal\openid_connect\Plugin\OpenIDConnectClientBase::retrieveUserInfo()

Retrieves user info: additional user profile data.

Parameters

string $access_token: Access token.

Return value

array|null Additional user profile information or NULL on failure.

Overrides OpenIDConnectClientInterface::retrieveUserInfo

2 calls to OpenIDConnectClientBase::retrieveUserInfo()
OpenIDConnectGoogleClient::retrieveUserInfo in src/Plugin/OpenIDConnectClient/OpenIDConnectGoogleClient.php
Retrieves user info: additional user profile data.
OpenIDConnectLinkedinClient::retrieveUserInfo in src/Plugin/OpenIDConnectClient/OpenIDConnectLinkedinClient.php
Retrieves user info: additional user profile data.
4 methods override OpenIDConnectClientBase::retrieveUserInfo()
OpenIDConnectFacebookClient::retrieveUserInfo in src/Plugin/OpenIDConnectClient/OpenIDConnectFacebookClient.php
Retrieves user info: additional user profile data.
OpenIDConnectGithubClient::retrieveUserInfo in src/Plugin/OpenIDConnectClient/OpenIDConnectGithubClient.php
Retrieves user info: additional user profile data.
OpenIDConnectGoogleClient::retrieveUserInfo in src/Plugin/OpenIDConnectClient/OpenIDConnectGoogleClient.php
Retrieves user info: additional user profile data.
OpenIDConnectLinkedinClient::retrieveUserInfo in src/Plugin/OpenIDConnectClient/OpenIDConnectLinkedinClient.php
Retrieves user info: additional user profile data.

File

src/Plugin/OpenIDConnectClientBase.php, line 383

Class

OpenIDConnectClientBase
Base class for OpenID Connect client plugins.

Namespace

Drupal\openid_connect\Plugin

Code

public function retrieveUserInfo(string $access_token) : ?array {
  $request_options = [
    'headers' => [
      'Authorization' => 'Bearer ' . $access_token,
      'Accept' => 'application/json',
    ],
  ];
  $endpoints = $this
    ->getEndpoints();
  try {
    $response = $this->httpClient
      ->get($endpoints['userinfo'], $request_options);
    $userinfo = Json::decode((string) $response
      ->getBody());
    $this->loggerFactory
      ->get('openid_connect_' . $this->pluginId)
      ->debug('Response from userinfo endpoint: @userinfo', [
      '@userinfo' => print_r($userinfo, TRUE),
    ]);
    return is_array($userinfo) ? $userinfo : NULL;
  } catch (\Exception $e) {
    $error = $e
      ->getMessage();
    if ($e instanceof RequestException && $e
      ->hasResponse()) {
      $response_body = $e
        ->getResponse()
        ->getBody()
        ->getContents();
      $error .= ' Response: ' . $response_body;
    }
    $this->loggerFactory
      ->get('openid_connect_' . $this->pluginId)
      ->error('Could not retrieve user profile information. Details: @error_message', [
      '@error_message' => $error,
    ]);
  }
  return NULL;
}