- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试创建一个 GAE 应用,用户可以在其中访问 appspot 域,使用 OAuth2 获得授权(或不获得授权),然后使用 gdata.spreadsheet 自动修改其 Google 电子表格之一.服务
。我已经使用 SignedJwtAssertionCredentials 实现了此功能,但在这种情况下,用户必须明确允许从应用程序进行编辑;我试图跳过此步骤,并让应用程序使用 OAuth2 从用户自己的帐户修改用户的电子表格。
Google 提供的文档表示,装饰器是实现此目的的最简单方法,执行如下操作:
from apiclient.discovery import build
from google.appengine.ext import webapp
from oauth2client.appengine import OAuth2Decorator
decorator = OAuth2Decorator(
client_id='your_client_id',
client_secret='your_client_secret',
scope='https://www.googleapis.com/auth/calendar')
service = build('calendar', 'v3')
...
@decorator.oauth_required
def get(self):
# Get the authorized Http object created by the decorator.
http = decorator.http()
# Call the service using the authorized Http object.
request = service.events().list(calendarId='primary')
response = request.execute(http=http)
但我不知道如何处理这个 service
对象来通过电子表格修改来实现我的目标。有关如何使用 service
对象的任何一般提示或具体提示都会有所帮助。
最佳答案
在提供的示例中,您将使用 Google Calendar API 构建日历服务,该 API 不是基于 GData 的 API。对于基于 GData 的 API,您必须使用 gdata.gauth
。
请注意,gdata.spreadsheet.service
无法与 gdata.gauth
一起使用,因为它仅支持已弃用的 ClientLogin(请检查 SpreadsheetsService
构造函数)参见[1])。您应该改用gdata.spreadsheets.client
。
完整的 SpreadsheetsClient
文档位于 [2]。您可以考虑以下示例,其中将工作表添加到电子表格中:
import webapp2
import cgi
import atom.data
import gdata.data
import gdata.spreadsheets.client
from oauth2client.client import OAuth2WebServerFlow
SCOPE = 'https://spreadsheets.google.com/feeds'
flow = OAuth2WebServerFlow(
client_id='your_client_id',
client_secret='your_client_secret',
scope=SCOPE,
redirect_uri='https://your_app.appspot.com/oauth2callback',
response_type='code')
class OAuthCalback(webapp2.RequestHandler):
def get(self):
# Get auth code
auth_code = cgi.escape(self.request.get('code'))
# Exchange auth code for credentials
credentials = flow.step2_exchange(auth_code)
# Get token from credentials
auth2token = gdata.gauth.OAuth2Token(client_id=credentials.client_id,
client_secret=credentials.client_secret,
scope=SCOPE,
access_token=credentials.access_token,
refresh_token=credentials.refresh_token,
user_agent='AppEngine-Google;(+http://code.google.com/appengine; appid: your_app_id)')
# Construct client
spreadsheets_client = gdata.spreadsheets.client.SpreadsheetsClient(source='https://your_app.appspot.com', auth_token=auth2token)
# Authorize it
auth2token.authorize(spreadsheets_client)
# Spreadsheet key
key = 'your_spreadsheet_key'
# Add worksheet to the spreadsheet
entry = spreadsheets_client.add_worksheet(key, 'test', 7, 10)
class MainHandler(webapp2.RequestHandler):
def get(self):
# Get url to start authorization
auth_url = flow.step1_get_authorize_url()
# Render link
content = '<a style="display:inline" href="' + auth_url + ' "target="_blank">Authorize</a>'
self.response.out.write(content)
app = webapp2.WSGIApplication([('/', MainHandler),
('/oauth2callback', OAuthCalback),
], debug=True)
关于 OAuth,我会使用 OAuth2WebServerFlow(有关更多信息,请参阅 [3])。凭证对象可以使用 pickle 进行序列化和反序列化。 [4] 中描述了存储凭证对象的更简单方法。
[1] - https://code.google.com/p/gdata-python-client/source/browse/src/gdata/spreadsheet/service.py?r=f7a9cb244df430d960f6187ee0fbf85fe0218aac
[2] - https://gdata-python-client.googlecode.com/hg/pydocs/gdata.spreadsheets.client.html#SpreadsheetsClient
[3] - https://developers.google.com/api-client-library/python/guide/aaa_oauth#OAuth2WebServerFlow
[4] - https://developers.google.com/api-client-library/python/guide/google_app_engine#Credentials
关于python - 在 python 中的 GAE 上使用 OAuth2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25897189/
在 GAE 中,我有一个应用程序将文件存储在 GAE blobstore 服务中。数据存储后,还应将其发送到未部署在 GAE 上的外部 Web 服务。我使用Java。 我的第一个想法是使用 JAX-R
我想找到一个用于验证用户、存储用户的 webapp 框架 并且具有jquery的ajax效果, 那么,你知道这个简单的框架吗? 谢谢 喜欢这个页面:http: //digu.com/reg 最佳答案
为了重新部署 GAE 应用程序,我目前必须在我用于部署的系统上安装 GAE 部署工具。虽然这个过程相对简单,但部署过程是一个手动过程,不能在防火墙后运行,并且部署工具必须安装在每台将用于更新 GAE
This链接显示 GAE 不支持开发服务器上的 cron 作业。那么我的其他选择是什么? 当用户的帐户截止日期已到时,我需要向他们发送电子邮件。 最佳答案 使用本地 cron 服务,并编写一个使用 c
我在运行 Maven GAE Plugin 的 gae:debug 目标时遇到问题.我收到的错误如下。有什么想法吗? 我用“mvn gae:debug”运行它。 [INFO] Packaging we
Google 刚刚宣布支持 App Engine 的 PHP 运行时。我有一个使用 Java 运行时开发的应用程序,它利用了 native App Engine 数据存储区。它目前用作移动客户端的后端
是否有一些前端允许管理员从 Google 应用引擎数据存储区插入、更新、删除记录以及创建修改和删除表,就像您在 mysql 上使用 phpMyAdmin 所做的那样??? 最佳答案 Google Ap
我正在以 GAE 为优势实现 PPO。以下代码是我根据OpenAI的基线实现计算GAE和返回的方式。 advantages = np.zeros_like(rewards) last_adv = 0
这是一个[python代码][1],我想知道它是否也可以用于GAE Java(当代码迁移时)。所以问题是,下面的 python 代码是否可以转换为 Java,而无需任何 Java 所没有的 pytho
当在 GAE 中收到一个 http 帖子时,我从另一个服务器下载一个 txt 文件,进行一些解析,然后返回信息。但是,当我更新这个 txt 文件并尝试通过 GAE 访问它时,似乎有延迟。这是一步一步的
当我运行 gae:run 时,它成功构建 jar 并启动服务器。但看起来服务器没有完全启动,因为我无法转到请求的页面。 当我使用 IDE(不是 maven gae 插件)和由 maven gae 插件
我知道有这样的插件可以在 vim 中调试 python:https://github.com/joonty/vdebug 我正在努力寻找调试 GAE 应用程序的方法,这可能吗?如果是这样,我应该采取什
我在 GAE 上部署了一个 webapp2 python 应用程序。有什么方法可以让我从 GAE 控制台探索源代码或更改项目文件。如果我只想更新已部署的应用程序上的单个 .py 文件而不是再次部署整个
我有一个 Google App 引擎应用程序,我希望它的工作方式有所不同,具体取决于它是在我的本地开发环境中运行(即使用 dev_appserver.py)还是在实际的 GAE 云中运行。 目前,我使
阅读 GAE NDB 数据存储的新文档: https://cloud.google.com/appengine/docs/python/ndb/modelclass#class_methods get
今天我第一次上传我的应用程序,当第一个请求进入以触发应用程序初始化时,它失败了。我已经在 Google GAE DEV 服务器上本地测试了所有内容,Google DEV 服务器和真正的 GAE 环境之
我正在使用 GAE 构建应用程序,并想为此使用 Django。哪个“补丁”更好? app-engine-patch 还是 django-gae-helpers?我指的是它们的功能和 future (其
使用 Google App Engine 标准 Python 2.7,我的dispatch.yaml 中有一个路径来指定“*/flex/*”类型的所有网址以路由到 Flex 服务。 调度.yaml调度
我需要一份关于使用 Flex+BlazeDS+Spring+GAE 的可读教程(在 GAE 数据存储中存储多个表)。有这样的吗? 最佳答案 你必须一步一步来: http://www.springsou
我们要重复 spring-boot-sample-gae 的指令一步一步,但我们仍然无法创建 WAR 文件,并出现以下错误消息: [错误] 无法在项目 gae-demo 上执行目标:无法解析项目 or
我是一名优秀的程序员,十分优秀!