我已经尽了很多努力来找出我的问题,但是那里没有运气。 我正在使用Guzzle进行身份验证,并且给了我令牌。因此没有问题。问题是,当我尝试获取数据时,它向我显示 “遇到了未捕获的异常 类型:GuzzleHttp \ Exception \ ClientException
消息:客户端错误:GET https://graph.microsoft.com/v1.0/me
导致400 Bad Request
响应:{“错误”:{“代码”:“ BadRequest”,“消息”:“当前已验证的上下文对此无效请求。(被截断...)“
这是我的下面的代码
$url = 'https://login.microsoftonline.com/' . $tenantId . '/oauth2/token?api-version=1.0';
$token = json_decode($guzzle->post($url, [
'form_params' => [
'client_id' => $appId,
'client_secret' => $appSecret,
'resource' => 'https://graph.microsoft.com/',
'grant_type' => 'client_credentials',
],
])->getBody()->getContents());
$accessToken = $token->access_token;
$graph = new Graph();
$graph->setAccessToken($accessToken);
$user = $graph->createRequest("GET", "/me")
->setReturnType(Model\User::class)
->execute();
echo "Hello, I am $user->getGivenName() ";
注意:我已经成功获得了令牌,并且我正在使用CSRF为false的CodeIgniter框架。我也已授予应用程序User.Read.All,User.ReadWrite.All
的权限请帮我解决这个问题。 预先感谢。
答案 0 :(得分:2)
您不能使用客户端凭据来呼叫/me
。客户端证书的目的是在没有用户的情况下 认证应用程序。因此,API无法转换您在调用user
时所指的/me
。