Google 用于桌面应用程序的电子表格 OAuth 2.0 - 任何人都可以*简单地*使它工作吗?

Google Spreadsheets OAuth 2.0 for a Desktop Application - can anyone get this working *simply*?

几天来我一直在为此焦头烂额。我承认,我不是 "that kind of programmer" - 我写数学算法,不是网络、安全或协议程序员。我想我会分享我目前的知识,因为这似乎是一个有点 "bitty" 的话题。也许我还没有理解官方文档,但到目前为止我还在苦苦挣扎,我发现其他人也在努力解决我怀疑仍然是一项新兴技术的问题。我会在下面的评论中 post 这些链接。

据我了解,有三种使用 OAuth 2.0 和 Google Drive/Google Spreadsheets 的主要方法,它们的实现方式略有不同。

  1. 对于已安装的桌面应用程序 <== 这个 post 关注这个
  2. 对于服务器端服务
  3. 对于网络应用程序

对于已安装的桌面应用程序的 OAuth 2.0,似乎有两种方法可以做到这一点。一种是使用 GoogleWebAuthorizationBroker,另一种是使用 GoogleAuthorizationCodeFlow。我无法确定地证明这一点,但似乎前者在 2013 年的某个时候已被弃用,而后者现在是首选方法。

首先,有人认为 GoogleAuthorizationCodeFlow 现在是首选方式吗?我确实短暂地使用了 GoogleWebAuthorizationBroker 方法并只登录了一次,我能够 运行 一个 SpreadsheetsService.Query 但生成的令牌似乎只有一个小时有效,我还不能弄清楚如何刷新它。我怀疑 GoogleAuthorizationCodeFlow 可以解决这个问题。

其次,任何人都可以 post 任何工作代码来 检索和更新特定的、名为 Google 电子表格 在桌面应用程序中使用 C# 中的 OAuth 2.0 ?我自己正在研究它,如果我让它工作,我将 post 我的代码。

实际上只有两种方法可以访问 Google 驱动器,Oauth2 或类似于 Oauth1 的服务帐户。我认为您不能使用 public API 密钥访问 Google 驱动器,但我必须仔细检查一下。

有四种设置凭据的方法

  1. Public API访问(API键)用于public访问,这里不需要进行身份验证。 Google 书籍和 Google url 缩短器,我认为 google+ api 的某些部分也是如此。 (你没有提到这个但我提到了)
  2. 本机应用程序的客户端 ID已安装的应用程序)。这主要是当重定向 URI 始终是本地主机时。如果您在本地测试 Web 应用程序,也可以使用它。 (这是 Oauth2 并且需要用户验证弹出浏览器的东西)
  3. 服务帐户:不是服务r帐户,它们用于您个人有权访问数据的帐户。这将不需要用户进行身份验证,因为您已经在后台为服务帐户设置了身份验证。示例:获取服务帐户电子邮件地址并授予其访问我的 Google 驱动器目录的权限将授予它向其上传文件的权限。
  4. web applications 对于 web 应用程序是肯定的,因为身份验证服务器 returns 身份验证的重定向 uri 是一个网站。 (Oauth2 将需要身份验证)

后台自动化运行如果你想在cron选项卡中设置一些东西运行你可以使用上面的任何一个。二和四将要求您将刷新令牌保存在某个地方以备后用,因为它们是 Oauth2。

GoogleAuthorizationCodeFlow 是 Google-dotnet-client lib

的旧版本

GoogleWebAuthorizationBroker 适用于 google-dotnet-client lib 的当前版本,如果您想使用任何 NuGet 包,您将使用它。较旧的版本不再开发,因此其中不会提供任何新功能。

您已经指向我的一个教程。所有这些的完整列表在这里 Google C# tutorials