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

Laravel调用Google Slides API创建演示文稿时遭遇401认证错误

解决Laravel中Google Slides API 401认证错误的方案
  • 检查凭证文件的权限与加载路径
    确保storage/app下的JSON凭证文件可被Laravel读取,使用绝对路径避免错误:

    $credentialsPath = storage_path('app/your-credentials-filename.json');
    

    同时将文件权限设置为644,防止因权限不足无法读取凭证内容。

  • 确保OAuth 2.0认证流程完整
    Google Slides API需要用户授权(服务账号场景除外),必须完成授权流程获取并维护有效令牌:

    1. 初始化客户端时指定正确的API权限范围,比如演示文稿编辑权限:Google_Service_Slides::PRESENTATIONS
    2. 开启离线访问模式,以便获取刷新令牌,避免频繁重新授权
    3. 实现令牌的存储与过期刷新逻辑
      示例核心代码:
    $client = new Google_Client();
    $client->setAuthConfig(storage_path('app/google-credentials.json'));
    $client->addScope(Google_Service_Slides::PRESENTATIONS);
    $client->setAccessType('offline');
    $client->setPrompt('select_account consent');
    
    // 加载已存储的令牌
    $tokenPath = storage_path('app/google-token.json');
    if (file_exists($tokenPath)) {
        $client->setAccessToken(json_decode(file_get_contents($tokenPath), true));
    }
    
    // 刷新过期令牌
    if ($client->isAccessTokenExpired()) {
        if ($client->getRefreshToken()) {
            $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
            file_put_contents($tokenPath, json_encode($client->getAccessToken()));
        } else {
            // 重定向至授权页面获取新令牌
            return redirect($client->createAuthUrl());
        }
    }
    
    $slidesService = new Google_Service_Slides($client);
    
  • 服务账号场景的额外检查
    若使用服务账号访问API:

    • 确认Google Cloud Console中已启用Google Slides API
    • 若为G Suite域用户,需在域管理后台配置域范围委派,允许服务账号模拟域内用户
    • 代码中设置要模拟的用户邮箱:
    $client->setSubject('target-user@your-domain.com');
    
  • 验证API启用状态
    登录Google Cloud Console,确认Google Slides API已被启用,未启用的API会返回类似认证失败的401错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:20:08