python - Freebase API (Python) 的授权难题

标签 python google-api freebase

我正在尝试获取一个非常简单的 Python 脚本来与 Freebase 对话。

我发现的所有示例都使用简单/api key 授权模型。所以我创建了一个 Google 开发者帐户,创建了一个项目,并尝试按照 Google 的说明获取 key 。它要求我提供我将从中进行调用的数字 IP 地址列表。不可行,因为我没有固定 IP(我确实设置了 dyndns,但这没有帮助,因为 Google 不会采用域名,只采用数字)。

所以我尝试了 OAuth2,这对于我的需要来说太过分了(我没有访问任何非公开用户数据)。但我什至找不到一个将 OAuth2 用于 Freebase 的在线示例。我尝试调整其他示例,但在 appengine、Decorator、几个过时的 Python 库和其他几种方法之间来回切换后,我一无所获。

任何人都可以解释或指出如何执行此操作的一个很好的示例(与我尝试授权的应用程序相比,无需在授权上花费 10 倍的时间)? OAuth2 的工作示例,最好没有多层“简化”API;或者有关如何解决 API key 授权的固定 IP 要求的提示,那就太棒了。谢谢!

史蒂夫

最佳答案

我必须为 Google 云端硬盘执行此操作,但据我所知,这应该适用于任何 Google API。

当您在开发者控制台中创建新的客户端 ID 时,您应该可以选择创建服务帐户。这将创建一个公钥/私钥对,您可以使用它进行身份验证,而无需任何 OAuth 废话。

我从我们的 GDrive 库中窃取了此代码,因此它可能已损坏,并且它是 GDrive 特定的,因此您需要将任何显示“drive”的内容替换为 Freebase 想要的任何内容。

但我希望这足以让您开始。

# Sample code that connects to Google Drive

from apiclient.discovery import build
import httplib2
from oauth2client.client import SignedJwtAssertionCredentials, VerifyJwtTokenError


SERVICE_EMAIL = "you@gmail.com"
PRIVATE_KEY_PATH ="./private_key.p12"

# Load private key
key = open(PRIVATE_KEY_PATH, 'rb').read()

# Build the credentials object
credentials = SignedJwtAssertionCredentials(SERVICE_EMAIL, key, scope='https://www.googleapis.com/auth/drive')

try:
  http = httplib2.Http()
  http = credentials.authorize(http)
except VerifyJwtTokenError as e:
  print(u"Unable to authorize using our private key: VerifyJwtTokenError, {0}".format(e))
  raise

connection = build('drive', 'v2', http=http)

# You can now use connection to call anything you need for freebase - see their API docs for more info. 

关于python - Freebase API (Python) 的授权难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23161274/

相关文章:

python - Perl 到 Python 正则表达式需要帮助

java - 使用 Google People API (Java) 检索有关联系人的信息

c# - 请求的身份验证范围不足。 [403]。谷歌人员API

freebase - 如何获取 freebase 中某些内容的别名

freebase - 使用 MQL 查询或 API 调用列出所有 Freebase 域

python - 如何查找特定模块的包名称?

python - 寻找 "right"方法在 numpy 中做一系列矩阵向量产品

python - 在字符串和数字python列表中找到最小值

javascript - Vue-router 与 google api

python - Django:根据标识符将数据填充到模型中