无法通过Google Spreadsheet API访问电子表格的问题求助
问题分析与解决建议
核心问题
你调用Google Sheets API的请求未携带认证所需的access_token参数,这是导致返回null的关键原因:Drive API的请求里明确传递了access_token,但Sheets API的调用完全缺失这个认证信息,谷歌服务器会拒绝请求并返回非JSON格式的错误内容,而@json_decode会将无效内容解码为null。
具体解决步骤
添加认证参数到Sheets API请求
修改你的Sheets API调用代码,把access_token加入请求参数中,同时去掉@符号以便排查错误:$accessToken = $_SESSION['g_access_token']; // 拼接带access_token的请求URL,注意urlencode处理特殊字符 $url = 'https://sheets.googleapis.com/v4/spreadsheets/1e2jdg1dcCmWhna-zV9ODNNtcgRDi2rGz8xRSsxpcH6c?fields=sheets.properties.title&access_token=' . urlencode($accessToken); // 去掉@符号,不要屏蔽错误 $d_data2 = json_decode(file_get_contents($url), true);排查具体错误信息
如果修改后仍有问题,直接打印原始响应内容,查看谷歌返回的具体错误(如权限不足、token过期、文件不存在等):$response = file_get_contents($url); var_dump($response); // 打印原始响应,定位具体问题 $d_data2 = json_decode($response, true);适配团队盘文件(如果适用)
如果你的表格存储在谷歌团队盘中,需要额外添加supportsAllDrives=true参数,和Drive API的逻辑保持一致:$url = 'https://sheets.googleapis.com/v4/spreadsheets/1e2jdg1dcCmWhna-zV9ODNNtcgRDi2rGz8xRSsxpcH6c?fields=sheets.properties.title&access_token=' . urlencode($accessToken) . '&supportsAllDrives=true';确认文件权限
验证当前token对应的账号确实拥有该电子表格的读写权限:Drive API能查到文件不代表Sheets API能访问,若表格在团队盘,需确保账号被授予了表格的具体编辑/查看权限。
内容的提问来源于stack exchange,提问作者ABadOmelette
相关产品推荐
相关产品推荐

