3

这是此问题的后续问题:

我已经成功创建了一个私钥,并阅读了有关服务器到服务器身份验证概念的 Google 文档的各个页面。

我需要创建一个 JWT 来授权我的 App Engine 应用程序 (Python) 访问 Google 日历并在日历中发布事件。从源代码oauth2client看来,我需要使用它oauth2client.client.SignedJwtAssertionCredentials来创建 JWT。

我目前缺少的是创建 JWT 并使用它来验证我的 Google 日历的 App Engine 应用程序所涉及的各个步骤的风格化示例 Python 代码。此外,从SignedJwtAssertionCredentials源代码看来,我需要一些与 App Engine 兼容的库来执行签名。

任何人都可以对此有所了解吗?

4

1 回答 1

8

经过一番挖掘,我发现了几个基于 OAuth2 身份验证的示例。由此,我制作了以下简单示例,该示例创建了一个 JWT 来访问日历 API:

import httplib2
import pprint

from apiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials

# Get the private key from the Google supplied private key file.
f = file("your_private_key_file.p12", "rb")
key = f.read()
f.close()

# Create the JWT
credentials = SignedJwtAssertionCredentials(
  "xxxxxxxxxx@developer.gserviceaccount.com", key,
  scope="https://www.googleapis.com/auth/calendar"
)

# Create an authorized http instance
http = httplib2.Http()
http = credentials.authorize(http)

# Create a service call to the calendar API
service = build("calendar", "v3", http=http)

# List all calendars.
lists = service.calendarList().list(pageToken=None).execute(http=http)
pprint.pprint(lists)

要在 Google App Engine 上工作,您需要为您的应用启用 PyCrypto。这意味着将以下内容添加到您的app.yaml文件中:

libraries:
- name: pycrypto
  version: "latest"
于 2013-10-16T21:05:13.580 回答