$scopes Defaults to "https://[graph national cloud host]/.default" scope * @param string $nationalCloud Defaults to https://graph.microsoft.com. See * https://learn.microsoft.com/en-us/graph/deployments * @param RequestAdapter|null $requestAdapter Use createWithRequestAdapter() to set the request adapter. */ public function __construct( TokenRequestContext $tokenRequestContext, array $scopes = [], string $nationalCloud = NationalCloud::GLOBAL, ?RequestAdapter $requestAdapter = null ) { if ($requestAdapter) { parent::__construct($requestAdapter); return; } $defaultRequestAdapter = new GraphRequestAdapter( GraphPhpLeagueAuthenticationProvider::createWithAccessTokenProvider( new GraphPhpLeagueAccessTokenProvider($tokenRequestContext, $scopes, $nationalCloud) ) ); $defaultRequestAdapter->setBaseUrl("$nationalCloud/beta"); parent::__construct($defaultRequestAdapter); } /** * Get an instance of GraphServiceClient that uses $requestAdapter * @param RequestAdapter $requestAdapter * @param string $nationalCloud Sets $requestAdapter baseURL if none has already been set * Defaults to https://graph.microsoft.com. See https://learn.microsoft.com/en-us/graph/deployments * @return GraphServiceClient */ public static function createWithRequestAdapter( RequestAdapter $requestAdapter, string $nationalCloud = NationalCloud::GLOBAL ): GraphServiceClient { if (!$requestAdapter->getBaseUrl()) { $requestAdapter->setBaseUrl("$nationalCloud/beta"); } $placeholder = new ClientCredentialContext('tenant', 'client', 'secret'); return new GraphServiceClient($placeholder, [], 'placeholder', $requestAdapter); } public static function createWithAuthenticationProvider( AuthenticationProvider $authenticationProvider, string $nationalCloud = NationalCloud::GLOBAL ): self { return GraphServiceClient::createWithRequestAdapter(new GraphRequestAdapter($authenticationProvider), $nationalCloud); } /** * Returns the request adapter instance in use * * @return RequestAdapter */ public function getRequestAdapter(): RequestAdapter { return $this->requestAdapter; } /** * A method that abstracts the /me endpoint and users /users/{{user-id}} under * the hood. */ public function me(): UserItemRequestBuilder { $urlTplParameters = $this->pathParameters; $urlTplParameters['user%2Did'] = 'me-token-to-replace'; return new UserItemRequestBuilder($urlTplParameters, $this->requestAdapter); } }