如何在项目中使用Composer加载 Google-API-PHP-Client 库操作谷歌服务

大强小哥_6432

大强小哥_6432

2026-07-02

532人浏览

原创

直接用 composer require google/apiclient 即可,官方包已支持自动加载,v2.15+ 是唯一推荐版本,需 php ≥7.4 并启用 json、curl、mbstring 扩展,初始化必须 setscopes(),区分服务账号与 oauth 授权,改用 google\service* 命名空间。

如何在项目中使用composer加载 google-api-php-client 库操作谷歌服务

直接用 composer require google/apiclient 就够了

不需要手动下载 ZIP、不用改 autoload、更不用自己写 PSR-4 映射。官方包已完整支持 Composer 自动加载,google/apiclient 是唯一推荐的稳定版本(v2.15+),旧版 google/apiclient-services 已被合并进主包,单独 require 会引发类冲突。

执行命令后,vendor/ 下会自动创建 google/apiclient 和其依赖(如 guzzlehttp/guzzle、psr/http-client)。若提示 ext-json missing 或 ext-curl not loaded,说明 PHP 缺少基础扩展——这不是库的问题,而是运行环境没配好。

  • PHP 版本需 ≥ 7.4(v2.15 起不再支持 7.2)
  • 必须启用 json、curl、mbstring 扩展
  • 如果用在 CLI 环境(如 cron 脚本),确认 php -m | grep curl 有输出

初始化 Client 时必须显式设置 setScopes()

不设 scope 就调 API,十有八九报 401 Invalid Credentials 或 403 Insufficient Permission。Google 不接受“默认全开”,每个请求必须声明最小必要权限。

例如读 Gmail 邮件要用 https://www.googleapis.com/auth/gmail.readonly,写日历要用 https://www.googleapis.com/auth/calendar.events。scope 字符串不能拼错、不能多空格、不能漏 https:// 前缀。

  • 多个 scope 用数组传入:$client->setScopes(['scope1', 'scope2'])
  • 开发阶段建议先用 https://www.googleapis.com/auth/drive.metadata.readonly 测试,它权限低、审批快
  • 生产环境上线前,务必去 Google Cloud Console 的 OAuth 同意页面补全应用名称和授权域名,否则用户授权页直接 404

服务账号(Service Account)和 OAuth 2.0 用户授权不能混用

这是最常踩的坑:用服务账号的 JSON 文件调用了需要用户上下文的 API(比如 GmailUsersMessagesResource),结果返回 400 Request had invalid authentication credentials —— 因为服务账号默认代表的是“机器”,不是“某个 G Suite 用户”。

Golang Google Wire
Golang Google Wire

在 Go 中使用 google/wire 实现编译时依赖注入——wire.NewSet、wire.Build、wire.Bind(接口→实现)、wire.Struct、wire.Value、wire.Interface

下载

区分方式很简单:

  • 服务账号适合后台任务(如定时同步公司共享 Drive 文件夹),需用 $client->setAuthConfig('service-account.json') + $client->useApplicationDefaultCredentials(),再 impersonate('user@domain.com')
  • 普通用户授权必须走 OAuth 2.流程:先 createAuthUrl() 跳转,用户同意后拿到 code,再 fetchAccessTokenWithAuthCode($code) 换 token
  • 拿到的 access_token 有效期 1 小时,必须配合 refresh_token 自动续期;refresh_token 只在首次授权返回一次,要存到数据库或文件里

Google_Service_* 类名已废弃,改用 namespaced 类

v2.0 之后彻底弃用 Google_Service_Drive 这类旧类名。现在所有服务都通过 Google\Service\* 命名空间访问,比如 Google\Service\Drive、Google\Service\Calendar。如果代码里还写 new Google_Service_Drive($client),会触发 Class not found。

新版实例化方式统一为:

$drive = new Google\Service\Drive($client);
$files = $drive->files->listFiles(['q' => "name contains 'report'"])->getFiles();

注意参数传递方式也变了:旧版用关联数组(array('q' => ...)),新版仍接受,但部分方法(如 batch())要求传 Google\Service\Drive\DriveFile 实例而非数组。

IDE 自动补全可能滞后,建议以 vendor/google/apiclient/src/Service/ 目录结构为准,别信过时的博客示例。

大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!

相关文章

谷歌浏览器
谷歌浏览器

谷歌浏览器Google Chrome是一款可让您更快速、轻松且安全地使用网络的浏览器。Google Chrome的设计超级简洁,使用起来得心应手。这里提供了谷歌浏览器纯净安装包,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

php composer 谷歌 google

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

9544

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

5741

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2055

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3588

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4274

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3351

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

4757

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3722

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11722

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习