针对桌面应用程序的Google Spreadsheets OAuth 2.0 - 任何人都可以使用* * *

时间:2015-02-04 13:06:50

标签: c# oauth-2.0 google-oauth google-oauth2

我已经把头发撕了好几天了。我承认,我不是那种程序员" - 我写数学算法,不是网络,安全或协议程序员。我以为我会分享我目前的知识,因为这似乎是一个有点" bitty"话题。也许我还没有理解官方文件,但到目前为止,我正在努力,我发现其他各种人都在努力解决我怀疑仍然是新兴技术的问题。我将在评论中发布以下链接。

根据我的理解,有三种使用OAuth 2.0和Google Drive / Google Spreadsheets的原则方法实现方式略有不同。

  1. 对于已安装的桌面应用 < ==此帖子重点关注
  2. 用于服务器端服务
  3. 对于网络应用程序
  4. 对于已安装的桌面应用程序的OAuth 2.0,似乎有两种方法可以执行此操作。一个使用GoogleWebAuthorizationBroker,另一个使用GoogleAuthorizationCodeFlow。我无法明确地证明这一点,但似乎前者在2013年的某个时候被弃用,后者现在是首选方法。

    首先,是否有人认为GoogleAuthorizationCodeFlow现在是首选的方式是正确的吗?我简单地让GoogleWebAuthorizationBroker方法工作并登录一次,我能够运行SpreadsheetsService.Query但似乎生成的令牌只有一个小时有效,我还不知道如何刷新它。我怀疑GoogleAuthorizationCodeFlow可以管理这个。

    其次,任何人都可以使用C#中的OAuth 2.0为桌面应用发布检索和更新特定的,名为Google Spreadsheet 的任何工作代码吗?我自己正在研究它,如果我开始工作,我会发布我的代码。

1 个答案:

答案 0 :(得分:3)

实际上只有两种方法可以访问Google驱动器,Oauth2或服务帐户,这是一种Oauth1。我不认为您可以使用公共API密钥访问Google云端硬盘,但我必须仔细检查。

有四种设置凭证的方法

  1. 公共API访问(API密钥)用于公共访问,您无需进行身份验证。 Google图书和谷歌网址缩短,google + api的某些部分我认为也是如此。 (你没有提到这个,但我是)
  2. 本机应用程序的客户端ID 已安装的应用程序)。这主要是当重定向URI始终是本地主机时。如果您在本地测试Web应用程序,也可以使用此方法。 (这是 Oauth2 ,需要用户验证弹出浏览器的事情)
  3. 服务帐户:不提供 r 帐户,用于您个人有权访问数据的帐户。这不需要用户进行身份验证,因为您已在后台为服务帐户设置了身份验证。示例:获取服务帐户电子邮件地址并授予其访问我的Google驱动器目录的权限,这将使其能够访问上传文件。
  4. Web应用程序对于Web应用程序是肯定的,因为身份验证服务器返回身份验证的重定向uri是一个网站。 (Oauth2将要求身份验证)
  5. 自动化在后台运行如果您想在cron选项卡中运行某些设置,可以使用上述任何一项。两个和四个将要求您将刷新令牌保存到某个地方以供稍后使用,因为它们是Oauth2。

    GoogleAuthorizationCodeFlow 是Google-dotnet-client lib的旧版本

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

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