【问题标题】:My JSON api key is not in correct format我的 JSON api 密钥格式不正确
【发布时间】:2017-09-18 08:00:16
【问题描述】:

我想向 Google Analytics 发出服务器到服务器的请求。我正在使用 Python、webapp2、App 引擎。因为我使用 App Engine,所以我已经拥有服务帐户并下载了它的 API 密钥:

{
  "type": "secret",
  "project_id": "secret",
  "private_key_id": "secret",
  "private_key": "secret",
  "client_email": "secret",
  "client_id": "secret",
  "auth_uri": "secret",
  "token_uri": "secret",
  "auth_provider_x509_cert_url": "secret",
  "client_x509_cert_url": "secret"
}

我正在关注this tutorial,但get_access_token() 引发错误。在调试库时,我发现代码需要 json 字段

json_data['_service_account_email'],
scopes=json_data['_scopes'],
private_key_id=json_data['_private_key_id'],
client_id=json_data['client_id'],
user_agent=json_data['_user_agent'],

我做错了什么?我正在使用 google_api_python_client 附带的 oauth2client。

【问题讨论】:

  • 你解决了吗?

标签: google-analytics google-api-python-client


【解决方案1】:

听起来您正在使用ServiceAccountCredentials.from_json() 加载您的密钥文件。

但是,此构造函数旨在用于序列化的 ServiceAccountCredentials 实例,而不是用于从云控制台下载的密钥文件。

尝试改用ServiceAccountCredentials.from_json_keyfile_name()

【讨论】:

  • 如果我将密钥文件的内容保存在数据库而不是文件中,我会使用什么?
  • 如果您以 PKCS #12 格式存储密钥,您应该可以使用ServiceAccountCredentials._from_p12_keyfile_contents()。请注意,在这种情况下,您还需要提供服务帐户的电子邮件地址作为参数。
  • 但这仍然需要使用文件。我想完全避免使用文件。
  • 我不确定我是否理解正确,但 _from_p12_keyfile_contents() 构造函数要求您提供包含 PKCS #12 格式的私钥的字符串,而不是文件:github.com/google/oauth2client/blob/master/oauth2client/…跨度>
猜你喜欢
  • 1970-01-01
  • 2021-11-18
  • 2020-11-04
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
相关资源
最近更新 更多