【问题标题】:python, how to write a desktop application without sharing the secret client credential?python,如何在不共享秘密客户端凭据的情况下编写桌面应用程序?
【发布时间】:2014-12-23 16:45:21
【问题描述】:

我正在按照以下示例在 python 中编写一个开源应用程序: https://developers.google.com/gmail/api/quickstart/quickstart-python?hl=it

我正确生成了 client_secret.json 并成功运行了该示例。

现在..考虑到我开始编写代码并根据谷歌文档:

警告:将您的客户保密。如果有人获得了您的客户端密码,他们可能会使用它来消耗您的配额、对您的 Google API 控制台项目产生费用并请求访问用户数据。

那么,我如何(将来)共享我的应用程序代码并同时保持 client_secret.json 的秘密?

【问题讨论】:

  • 我认为您不需要共享 client_secret.json。相反,您只共享您的应用程序并要求下一个人将他/她的 client_secret.json 保存在特定位置。
  • 我只需要一个简单的方法来授予对 GMail 帐户的访问权限,要求人们创建一个 client_secret.json 是不可能的
  • 如果我没记错,那么 client_secret.json 是应用程序的凭据,而不是用户的凭据。然后,您需要为要安装的任何地方的应用程序提供相同的文件。无论如何,我试图提供帮助,但我之前从未亲自处理过 gmail API。 :)

标签: python gmail-api


【解决方案1】:

好的,我在这里得到了答案:

https://developers.google.com/accounts/docs/OAuth2InstalledApp

此流程类似于使用 OAuth 2.0 for Web 中显示的流程 服务器应用程序,但有三个不同之处:

  • 创建客户端 ID 时,您指定您的应用程序是 已安装的应用程序。这导致不同的值 redirect_uri 参数。
  • 从获取的客户端 ID 和客户端密码 Developers Console 嵌入在您的源代码中 应用。在这种情况下,client secret 显然不是 被视为秘密。
  • 授权码可以退回给您 浏览器标题栏中的应用程序或 http://localhost 查询字符串中的端口。

换句话说,如果您在 Google API 控制台中创建项目时指定项目是“已安装的应用程序”,则可以安全地将机密嵌入代码中

【讨论】:

  • 但是这样做是否意味着客户无法消耗您的每个项目配额?不保密实际上意味着什么?
猜你喜欢
  • 2022-10-10
  • 2022-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 2013-09-09
  • 2012-03-21
相关资源
最近更新 更多