$jsonKey JSON credential file path or JSON credentials * as an associative array */ public function __construct($scope, $jsonKey) { if (\is_string($jsonKey)) { if (!\file_exists($jsonKey)) { throw new \InvalidArgumentException('file does not exist'); } $json = \file_get_contents($jsonKey); if (!($jsonKey = \json_decode((string) $json, \true))) { throw new \LogicException('invalid json for auth config'); } } if (!\array_key_exists('client_id', $jsonKey)) { throw new \InvalidArgumentException('json key is missing the client_id field'); } if (!\array_key_exists('client_secret', $jsonKey)) { throw new \InvalidArgumentException('json key is missing the client_secret field'); } if (!\array_key_exists('refresh_token', $jsonKey)) { throw new \InvalidArgumentException('json key is missing the refresh_token field'); } $this->auth = new \WPMailSMTP\Vendor\Google\Auth\OAuth2(['clientId' => $jsonKey['client_id'], 'clientSecret' => $jsonKey['client_secret'], 'refresh_token' => $jsonKey['refresh_token'], 'scope' => $scope, 'tokenCredentialUri' => self::TOKEN_CREDENTIAL_URI]); if (\array_key_exists('quota_project_id', $jsonKey)) { $this->quotaProject = (string) $jsonKey['quota_project_id']; } } /** * @param callable $httpHandler * * @return array { * A set of auth related metadata, containing the following * * @type string $access_token * @type int $expires_in * @type string $scope * @type string $token_type * @type string $id_token * } */ public function fetchAuthToken(callable $httpHandler = null) { return $this->auth->fetchAuthToken($httpHandler); } /** * @return string */ public function getCacheKey() { return $this->auth->getClientId() . ':' . $this->auth->getCacheKey(); } /** * @return array */ public function getLastReceivedToken() { return $this->auth->getLastReceivedToken(); } /** * Get the quota project used for this API request * * @return string|null */ public function getQuotaProject() { return $this->quotaProject; } /** * Get the granted scopes (if they exist) for the last fetched token. * * @return string|null */ public function getGrantedScope() { return $this->auth->getGrantedScope(); } }