适用于PHP的Microsoft Graph SDK-尝试获取数据时出现400错误请求

时间:2018-06-21 13:29:18

标签: php microsoft-graph

我已经尽了很多努力来找出我的问题,但是那里没有运气。 我正在使用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

的权限

请帮我解决这个问题。 预先感谢。

1 个答案:

答案 0 :(得分:2)

您不能使用客户端凭据来呼叫/me。客户端证书的目的是在没有用户的情况下 认证应用程序。因此,API无法转换您在调用user时所指的/me