ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

google-api-python-client 使用指南:API Key 认证与 developerKey 参数全解析

google-api-python-client 使用指南:API Key 认证与 developerKey 参数全解析 后端【免费下载链接】google-api-python-client The official Python client library for Googles discovery based APIs.项目地址https://gitcode.com/gh_mirrors/go/google-api-python-client点击查看免费下载本文聚焦 Google 官方 Python 客户端库 google-api-python-client 中的API Key简单 API 访问认证方式。当你的应用只调用不涉及私有用户数据的 Google API 时可以通过build()的developerKey参数注入 API Key实现按项目计量accounting与配额管理。读完本文你将掌握 API Key 的适用场景、在build()与build_from_document()中的正确用法以及 Key 在库内部请求链路中的注入机制。API Key 是什么什么时候该用它Google API 的调用全部需要认证但认证方式分为两类简单 API 访问simple access与授权访问authorized access。API Key 属于前者用于不访问任何私有用户数据的 API 调用。如 docs/auth.md 所述此时应用只需要向 Google 证明自己是某个 API Console 项目的应用以便测量项目用量、用于计量与配额accounting purposes而无需代表某个具体用户。关联文档 docs/api-keys.md 对此给出了明确判定标准适用 API Key调用不访问私有用户数据的 API例如公开的书籍搜索、翻译等公开资源必须改用 OAuth 2.0一旦 API 会访问私有用户数据如用户私有的日历、云端硬盘文件就必须走 OAuth 2.0 授权流程可参考 docs/oauth-installed.md已安装应用、docs/oauth-server.md服务端到服务端与 docs/oauth.mdOAuth 2.0 总览。注意某些 API 方法两种方式都可用但同样的方法在 simple 与 authorized 两种访问方式下行为可能不同例如配额口径、返回字段差异。具体应以目标 API 的方法文档为准见 docs/auth.md。获取 API Key在 Google Cloud Console 中创建API Key 在Google Cloud ConsoleAPI Console的项目中生成。在 docs/start.md 与 docs/auth.md 中项目均将其描述为用于你的 Google Cloud Console / API Console 项目的凭据。build()与build_from_document()的源码 docstringgoogleapiclient/discovery.py也明确指出developerKey是从 API 控制台获取的 Key。生成后请注意API Key 必须妥善保管。文档中给出了明确的安全警告——一旦 Key 泄露他人即可用它消耗你的配额quota甚至对你的 Console 项目产生费用见 docs/auth.md 与 docs/start.md。建议的做法是不要把 Key 硬编码进源码或提交到版本库通过环境变量、配置文件或密钥管理服务注入在 Console 中为 Key 设置调用限制如限制 IP、限制可调用的 API减小泄露后的影响面。核心用法把 Key 传给 build()使用 API Key 的方式非常简单——在创建 service 对象时把它作为developerKey参数传给build()from googleapiclient.discovery import build books_service build(books, v1, developerKeyapi_key)build()的完整签名googleapiclient/discovery.py如下def build( serviceName, # 服务名如 books version, # API 版本如 v1 httpNone, discoveryServiceUrlNone, developerKeyNone, # API Key 从这里传入 modelNone, requestBuilderHttpRequest, credentialsNone, cache_discoveryTrue, cacheNone, client_optionsNone, adc_cert_pathNone, adc_key_pathNone, num_retries1, static_discoveryNone, always_use_jwt_accessFalse, ):该参数在库中的定位是按服务对象service级别生效build()会把developerKey一路传递下去最终存入Resource对象的self._developerKey见 Resource.init。此后所有通过该 service 对象发起的调用都会自动携带你的 API Key——这正是 docs/api-keys.md 强调的All calls made using that service object will include your API key。从 discovery 文档直接构建build_from_document()如果你已经持有 discovery 文档例如从缓存或静态文档加载也可以改用build_from_document()它同样接受developerKey参数googleapiclient/discovery.pyfrom googleapiclient.discovery import build_from_document service build_from_document( discovery_doc_json, basehttps://www.googleapis.com/, developerKeyapi_key, )仓库的测试 tests/test_discovery.py 专门验证了这一路径使用build_from_document(..., developerKey123)构建服务后plus._http是普通的httplib2.Http实例而非google_auth_httplib2.AuthorizedHttp。测试注释明确说明了这一点It should not be an AuthorizedHttp, because that would indicate that application default credentials were used——即传入 developerKey 后库不会再去尝试应用默认凭据ADC避免在无需 OAuth 的场景下误触发授权流程。底层原理Key 如何注入每一次请求API Key 的注入发生在两个环节均由源码可印证环节一获取 discovery 文档时当build()需要联网获取 discovery 文档时_retrieve_discovery_doc()会判断 developerKey 是否存在并通过_add_query_parameter()将其作为key查询参数附加到 discovery 请求 URL 上googleapiclient/discovery.pyif developerKey: actual_url _add_query_parameter(url, key, developerKey)环节二执行具体 API 方法时当通过 service 对象调用某个 API 方法时库在构造请求参数的过程中会把 developerKey 写入actual_query_paramsgoogleapiclient/discovery.pyif self._developerKey: actual_query_params[key] self._developerKey也就是说每个方法调用生成的 HTTP 请求都会携带?key你的API Key查询参数。底层拼接由 googleapiclient/_helpers.py 的_add_query_parameter()完成它基于urllib.parse把参数合并进现有 URL 的 query 部分如果同名参数已存在则替换值为None时则原样返回 URL。顺带一提虽然本库通过 query 参数传 Key但 Google API 生态中也有通过X-Goog-Api-Key请求头传 Key 的新方式两者目的相同采用哪种取决于目标 API 与库版本的支持情况。实战示例Books API 与 Translate API配合公开 APIAPI Key 是最轻量的接入方式。以书籍搜索为例结合仓库文档 docs/mocks.md 中的用法真实调用只需from googleapiclient.discovery import build api_key your_api_key # 从环境变量等安全渠道读取 service build(books, v1, developerKeyapi_key) request service.volumes().list(sourcepublic, qandroid) response request.execute()再如 docs/logging.md 中展示的翻译服务示例service build(translate, v2, developerKeyyour_api_key)在开发与测试阶段还可以配合HttpMock使用 API Key 占位符——docs/mocks.md 明确说明由于 Mock 对象并不会真正发起 HTTP 调用占位符无需替换为真实 Key 也能跑通测试这非常适合在 CI 中离线验证业务逻辑。安全与最佳实践小结按数据敏感度选认证方式公开数据用 API Key私有用户数据必须走 OAuth 2.0docs/oauth-installed.md、docs/oauth-server.mdKey 即配额泄露 API Key 等于把项目的配额与计费暴露给他人务必保密见 docs/auth.md 与 docs/start.md 中的警告注入点build()或build_from_document()的developerKey参数service 级别的所有请求自动携带无需在每次调用时重复传参避免与 credentials 混用build()中http与credentials互斥googleapiclient/discovery.py同样地既然用了 developerKey 就不必再配置 OAuth 凭据——测试已证实传入 developerKey 时库会跳过 ADC 授权流程tests/test_discovery.py。从 docs/README.md 的文档索引可以继续深入认证全景见 docs/auth.md安装入门见 docs/start.md测试技巧见 docs/mocks.mdOAuth 各场景见 docs/oauth.md 及其子文档。赞分享后端【免费下载链接】google-api-python-client The official Python client library for Googles discovery based APIs.项目地址https://gitcode.com/gh_mirrors/go/google-api-python-client点击查看免费下载相关推荐如何用3分钟免费改造Windows 11ExplorerPatcher让经典界面完美回归如何用3分钟免费改造Windows 11ExplorerPatcher让经典界面完美回归 还在为Windows 11的全新界面感到不适应吗想要找回熟悉的操作后端Google API PHP Client 授权机制完全指南API Key、OAuth 2.0 与 ID Token 认证实践Google API PHP Client 授权机制完全指南API Key、OAuth 2.0 与 ID Token 认证实践 Google APIs Cli后端google-api-php-client 使用 API Key 鉴权setDeveloperKey 用法与底层实现解析google api php client 使用 API Key 鉴权setDeveloperKey 用法与底层实现解析 当你的应用调用的 Google AP后端上一篇LifeOS Vitals 技能详解macOS 系统性能诊断的只读 CLI 与判定式解读下一篇免费 Mermaid 在线编辑器完全指南Mermaid Live Editor 三步画出第一张图创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表