问题标签 [google-api-python-client]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
67 浏览

python - 我可以使用 google calendar api v3 python 获取 editLink 和 aclLink 吗?

我当前的项目使用 gdata,我可以通过以下调用轻松获取 editLink 和 aclLink:

现在我正在尝试切换到 api v3。而且我发现无法在 v3 API 中获取 editLink 和 aclLink 。

有没有办法在 v3 API 中获取 editLink 和 aclLink ?

非常感谢!

0 投票
1 回答
903 浏览

python - 部署到 GAE 后,client_secrets.json 文件无法读取

我有一个可以dev_appserver.py在我的机器上使用的应用程序。我成功部署它:

我的应用程序使用 Google API,因此此部署包含一个client_secrets.json文件,该文件位于我的项目文件夹的根目录中。它似乎已正确部署,因为我在重新下载我的应用程序时得到它(使用appcfg.py download_app -A myapp -V 1 ~/myapp)。

但是,当打开一个调用需要访问的脚本的页面时client_secrets.json,我得到一个Error: Server Error,这是实例日志显示的内容(myapp 和 MYID 被审查):

这是第 41 和 42 行myapp.py

这是CLIENT_SECRETS

我究竟做错了什么?

编辑:#appengine 上的 murph 提到这可能来自不正确的app.yaml配置,我应该“确保它不是app.yaml作为静态文件提供,并确保您自己的任何代码都不会决定提供它”,但即使删除该文件的所有静态处理程序后,问题仍然存在。这是我的 app.yaml 的 pastebin。谈到这一点,我注意到如果我离开 client_secrets.json 并部署,我会看到“克隆 6 个静态文件”。然后,如果我删除它并重新部署,我会看到"Cloning 5 static files"app.yaml这是否确认我的匹配项中仍有某些内容client_secrets.json,或者这些单独的机制?

0 投票
1 回答
1500 浏览

python - 如何在 GAE 任务队列中执行需要 OAuth 的操作?

我有一个简单的 Google App Engine 应用程序,其中包含一个/update更新 YouTube 播放列表的页面。它看起来像这样:

它按预期工作并且该update_playlist()方法完成了它的工作,但事实证明在某些情况下它可以运行很长时间,从而导致DeadlineExceededError. 因此,在阅读了可用选项之后,我认为任务队列API 是可行的方法(对吗?),我正在尝试使用它,遵循在 Python 中使用推送队列指南。

→ 简而言之,我UpdatePage分为UpdatePageHandler+ UpdatePageWorker

不幸的是,在进行拆分之后,我的 OAuth2 装饰器似乎不再起作用:

如果不是decorate 而是UpdateHandlerPage:getdecorate UpdateWorkerPage:post,我会得到一个无限的失败循环:

我能做些什么?谢谢你的帮助!

0 投票
1 回答
927 浏览

python - 在没有本地网络服务器的情况下在 Python 中使用 Google 客户端库

我有一个 Python 程序,它与通过 OAuth 使用 Google 提供的示例代码进行身份验证的 Google API 交互:

但是,每当我运行它时,它都会强制打开浏览器并要求用户单击按钮进行身份验证。如果程序在没有本地 Web 服务器的机器上运行,这会导致问题。我看过这个问题,似乎表明问题可以通过使用来解决--noauth_local_webserver,但它说我必须重写我的程序以gflags用于参数处理,并且我现有的代码已经使用了argparse

有没有一种方法可以在不强制打开浏览器的情况下对用户进行身份验证,而不必重写我的整个应用程序来使用gflags

0 投票
1 回答
1741 浏览

python - 如何在 GAE cron 作业中执行需要 OAuth 的操作?

这篇文章是如何在 GAE 任务队列中执行需要 OAuth 的操作?. 正如 bossylobster 在这篇文章中所建议的那样,我确实尝试user_id在我的脚本中硬编码,但 cron 任务总是失败:

  • 我可以看到它在日志中被触发......

    /li>
  • ...但是,它总是失败(在 AppEngine 的Cron Jobs部分中显示为红色的“Failed” ),并且它应该运行的任务队列永远不会在Task Queues部分中弹出。

我不明白的是,如果我/update手动打开,我会在下面看到登录提示。cron 应该如何绕过它?我怎样才能调试发生了什么?

GAE登录提示

谢谢您的帮助。

编辑/跟进@dlebech答案:login: adminurl. app.yaml在本地(通过以管理员身份登录并在浏览器中访问处理程序的 URL,Securing URLs for Cron中所述)一切正常,但是一旦我部署,我的应用程序永远不会通过 OAuth2 装饰器:

  • 用一些调试print语句......

    /li>
  • ...这是我在 GAE 日志中部署后看到的内容(日志在最后一行停止,接下来什么也没有发生):

    /li>
0 投票
1 回答
5243 浏览

python - 如何在 GAE/Python 上进行“access_type=offline”/仅限服务器的 OAuth2 操作?

这篇文章是如何在 GAE cron 作业中执行需要 OAuth 的操作?,我意识到我误用了@oauth_required来自OAuth2DecoratorFromClientSecrets.

OAuth 2.0 解释演示所述,Oauth 2.0 解决了以下问题:

  • 建立服务...
  • ...由用户访问...
  • ...并从第三方访问用户的数据

这就是@oauth_required抽象的内容,它做得很好(目前我的应用程序“工作”:如果我触发刷新页面,我被要求授权访问我的 youtube 数据到我的应用程序,其余的如下)。但这不是我想要的!我的应用程序做了一些更简单的事情,即每天使用我的凭据创建一个 youtube 播放列表,而无需任何用户输入。因此,与上述 3 层协商相比,我想要:

  • 一项服务
  • ...由用户访问
  • ...但只能访问“服务器拥有的”YouTube 播放列表数据。我不想访问用户的 YouTube 数据,我只想修改我(即我/服务器保存的用户 ID)拥有的播放列表。

但我仍然需要帮助才能做到这一点;这是我目前的状态:

  1. 经过几次搜索后,我了解到我想要做的是称为离线访问(强调我的,这几乎正是我的用例):
    “在某些情况下,当用户不存在时,您的应用程序可能需要访问 Google API。这方面的示例包括备份服务和应用程序,它们恰好在星期一早上 8 点发布博客。这种访问方式称为离线,Web 服务器应用程序可能会请求用户离线访问。正常和默认的访问方式称为在线。 " ...
    → 所以我应该继续做我现在正在做的事情,继续请求访问我的 YouTube 帐户,但是使用type_access=offline标志来获取令牌,并将其保留/用于后续请求。

  2. 离线访问和 使用刷新令牌部分完全有意义,但停留在一般 HTTP 级别。作为一个新手,我不知道如何将这些原则集成到我的 Python 代码中,也没有找到任何示例 Python 代码......
    → 谁能帮我提供一个 Python 示例来说明如何以及在何处使用这面旗帜?

  3. ......尤其是在学习之后oauth2client.appengine.OAuth2Decorator.oauth_required,我仍然不确定是否可以将其弯曲到我的情况下,或者我是否应该做自己的事情。
    → 你怎么看?

谢谢你的时间; 如果需要,我也会在 irc://irc.freenode.net/#appengine 作为ronj.

0 投票
1 回答
2034 浏览

python - 如何在 Admin SDK 中访问 Directory API

试图访问 Google Admin SDK(参考)中的 Directory API 是徒劳的。升级“google-api-python-client”包并不能解决它,如下载 > 安装 > Python 链接所示。

我也没有在文档中看到它列出了 API 的编程名称,所以我假设它是“目录”,但也尝试过“directory.admin”和“admin.directory”。尝试运行测试代码时出现以下异常:

有人可以帮忙解决我可能忽略的问题吗?不幸的是,提供外壳来访问 API 的“快速入门”似乎被破坏了(参考)。当我选择 Python > 命令行 > 配置项目时,我收到一条错误消息,指出“抱歉,现在无法配置项目”。

这是我在自定义目录库类中使用的相关代码:

这只是 API 还没有可用的客户端库的情况吗?如果是这样,什么时候可以使用?

0 投票
1 回答
11190 浏览

python - 如何在离线 GAE cron 任务中避免“无法检索访问令牌:{“error”:“invalid_grant”}?

这篇文章是How to make 'access_type=offline' / server-only OAuth2 operations on GAE/Python的后续文章。该http = credentials.authorize(httplib2.Http())部分在测试时不再失败,但在 GAE 的 cron 运行时它似乎仍然失败,它无法刷新我的access_token

  1. 我可以通过调用来手动运行我的工作/fetch,比如说在 11:45。
  2. 然后在 11:55立即安排/cronfetch工作,没有任何access_token问题。
  3. 但是,今天早上我醒来发现同样 /cronfetch的任务(除了时间相同,我的非测试日常任务是在 01:00 时)失败了:

    /li>

这个在令牌刷新邮件列表消息(+ SO post 1SO post 2SO post 3 )上出现“invalid_grant”错误看起来与我的问题相似,但它似乎与令牌有关。在我的情况下,我只使用 default ,并且在初始访问请求中 看到“在我不使用应用程序时执行这些操作” 。access_type=onlineaccess_type=offline

我刚刚在 08:25 重新安排了一次 cron 运行(注意不要启动手动运行),其中包含我为您提交给 GitHub 的调试打印语句。create_playlist这是我得到的,它相似但不完全相同(注意最后几行似乎排序不正确,在读取所有源之前我绝对不会做 OAuth2 的东西)。所以忽略倾斜的顺序(GAE 日志记录工件?),看来我的http = credentials.authorize(Http())调用create_playlist(self),目前在第 144 行是错误的:

→ 为什么 cron 作业在手动运行 5 分钟后工作,但在 6 小时后失败?我认为刷新令牌永不过期。我究竟做错了什么?

请注意,这是我的第一个 GAE 工作,也是我的第二个 Python 程序,非常欢迎一般的代码审查/建议,但请保持温和 :)

代码在GitHub 上,我的实例可以在dailygrooves.org上找到。谢谢你的帮助!

0 投票
0 回答
837 浏览

google-app-engine - 在 Google App Engine 项目中访问 Google 日历

我是 Google App Engine (GAE) 及其 Python api 的新手。在过去的周末,我一直在尝试设置一个简单的应用程序,只要它在日历中看到即将发生的事件,它就会向我的手机发送 SMS 消息。为此,我将 GAE 与 Twilio 和 Google Calendar API (v3) 一起使用——全部使用 Python。

我有一个 GAE 帐户,并且能够通过以下示例运行简单的教程网络应用程序https://developers.google.com/appengine/docs/python/gettingstartedpython27/introduction和这里https://developers.google.com/应用引擎/文章/twilio。我还能够运行 cron 作业以在 GAE 上成功使用 Python 脚本发送 SMS 消息。但是,当我无法弄清楚如何编写一个脚本(cron 作业)来使用 Google Calendar API 检索(我的 GAE 帐户的)日历事件时。我已经阅读了大量关于 Google 开发人员的教程和说明,但发现自己越来越困惑。

  • 是否可以为在 GAE 上运行的 cron 作业创建 Python 脚本以检索日历事件?我在访问日历 API V3(托管域)的 GAE 中遇到了OAuth2 身份验证,这与我试图实现的目标很接近,但并不完全(我的计划不是为用户创建 Web 应用程序)。Google Calendar API 不能与服务帐户一起使用的传言是否属实?
  • 使用 OAuth 2.0 需要用户允许访问。我的理解是,它会在一段时间(1 小时?)内将访问令牌返回给请求的应用程序,然后要求用户刷新或再次通过授予访问过程?如果是这种情况,我不想使用它,因为我的目标是让脚本定期运行(比如每 15 分钟运行一次),以查看在接下来的 15 分钟内是否有任何即将到来的日历事件。
  • 如果有人可以指导我使用一个示例 Python 脚本,该脚本将用于从 GAE 上的所有者帐户中检索 Google 日历事件,那将非常有帮助。

如果有人可以回答上述任何问题,我将非常感谢您的帮助。

0 投票
1 回答
2513 浏览

python - Youtube Python API v3 调用 onBehalfOfContentOwner 返回 403 错误

我正在尝试使用参数 onBehalfOfContentOwner=MY_CONTENT_OWNER_ID 搜索我自己的视频,但不断收到 403 Forbidden 错误。

私钥用于身份验证。

没有 onBehalfOfContentOwner 我的通话效果很好,但不返回标签