【发布时间】:2015-04-29 08:17:06
【问题描述】:
我正在使用 Python 开发一个 Google App Engine 应用。我正在使用:
- Google Calendar API v3(访问我自己域中的日历。所以,这是安装在我域中的 Google Apps)
- 适用于 Python 的 Google API 客户端库。
- OAuth2 对我的域 (name@mydomain.com) 的用户进行身份验证
我认为我必须使用服务帐户,因为:
“如果您的 App Engine 应用程序需要调用 API 来访问应用程序项目拥有的数据,您可以使用服务帐户来简化 OAuth 2.0”
取自https://developers.google.com/api-client-library/python/platforms/google_app_engine#ServiceAccounts
但我不确定我是否误解了什么。我的场景(GAE 应用尝试访问我自己域中的 Google Apps)是否是服务帐户的候选人?
我尝试了几种处理 OAuth2 的方法:
- 如上所述,使用服务帐户
- 使用 Google API 客户端库为 Python 提供的 Python 装饰器(OAuth2Decorator 和 OAuth2DecoratorFromClientSecrets)
在这两种情况下,我都会遇到相同的错误:
- 在我的本地机器上执行:请求https://www.googleapis.com/calendar/v3/calendars/primary/events?alt=json 时的HttpError 401 返回“无效凭据”(我将事件创建为JSON 对象,如下:https://developers.google.com/google-apps/calendar/v3/reference/events/insert#examples)。错误堆栈跟踪:https://dl.dropbox.com/u/61566717/output/local_error
- 部署到 GAE:错误 310 (net::ERR_TOO_MANY_REDIRECTS)。字符串 "_ah/login_required?continue=" 多次附加在 URL 的末尾。 客户端 ID/客户端密钥或 API 控制台生成的服务帐户参数可能有问题吗?我应该重新创建它们吗?
我完全迷路了。有什么线索吗?
在此先感谢
【问题讨论】:
标签: python google-app-engine oauth-2.0 google-calendar-api google-api-python-client