You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Graph Explorer正常,Laravel调用Microsoft Graph获取用户许可详情提示资源不存在

问题分析与解决方案

问题核心

调用Microsoft Graph API获取用户许可详情时,Graph Explorer可正常执行,但Laravel应用返回Request_ResourceNotFound错误,本质是服务端身份验证上下文与Graph Explorer存在差异,同时存在请求构建的细节问题。

错误原因及对应修复

1. Client Credentials模式的Scope配置错误

你的graph_auth方法中,scope参数使用了自定义应用ID URI,不符合client credentials模式的要求。该模式下必须使用https://graph.microsoft.com/.default作为scope,以此获取管理员预先配置的所有应用权限。

修复代码:

public function graph_auth() {
    $guzzle = new \GuzzleHttp\Client();
    $url = 'https://login.microsoftonline.com/' . env("TANANT_ID") . '/oauth2/token';
    $token = json_decode($guzzle->post($url, [
        'form_params' => [
            'client_id' => env("CLIENT_ID"),
            'client_secret' => env("CLIENT_SECRET"),
            'resource' => 'https://graph.microsoft.com/',
            'scope' => 'https://graph.microsoft.com/.default', // 修正此处
            'grant_type' => 'client_credentials',
        ],
    ])->getBody()->getContents());
    return $token->access_token;
}

2. 缺少必要的API权限(需管理员同意)

Client Credentials模式下,应用需要拥有User.Read.All或Directory.Read.All的应用权限(而非委托权限),且必须由Azure AD管理员授予权限:

  • 登录Azure门户 → 应用注册 → 目标应用 → 权限 → 添加权限 → Microsoft Graph → 应用权限 → 搜索并添加User.Read.All或Directory.Read.All → 点击"授予管理员同意"。

3. 用户邮箱未URL编码

直接拼接邮箱到API路径中,若邮箱包含特殊字符(如@、.)会导致路径解析错误,需对邮箱进行URL编码。

修复代码:

try{
    $user_mail = urlencode($request['semail']); // 添加URL编码
    $licenses = $graph->setApiVersion("V1.0")
                      ->createRequest("GET", "/users/" . $user_mail . "/licenseDetails")
                      ->execute();
}
catch(Exception $e){
    info($e);
}

4. 验证租户ID正确性

确认.env文件中的TANANT_ID是正确的Azure AD租户ID,避免因租户错误导致无法找到用户。

额外验证步骤

  • 用JWT解析工具解析获取到的access_token,检查aud(受众)是否为https://graph.microsoft.com/,roles字段是否包含User.Read.All或Directory.Read.All权限。
  • 确保请求的用户邮箱确实存在于当前租户中,且拼写无误。

内容的提问来源于stack exchange,提问作者Divyesh Jesadiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 06:52:49