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 的主要方法,它们的实现方式略有不同。
- 对于已安装的桌面应用程序 <== 这个 post 关注这个
- 对于服务器端服务
- 对于网络应用程序
对于已安装的桌面应用程序的 OAuth 2.0,似乎有两种方法可以做到这一点。一种是使用 GoogleWebAuthorizationBroker
,另一种是使用 GoogleAuthorizationCodeFlow
。我无法确定地证明这一点,但似乎前者在 2013 年的某个时候已被弃用,而后者现在是首选方法。
首先,有人认为 GoogleAuthorizationCodeFlow
现在是首选方式吗?我确实短暂地使用了 GoogleWebAuthorizationBroker
方法并只登录了一次,我能够 运行 一个 SpreadsheetsService.Query
但生成的令牌似乎只有一个小时有效,我还不能弄清楚如何刷新它。我怀疑 GoogleAuthorizationCodeFlow
可以解决这个问题。
其次,任何人都可以 post 任何工作代码来 检索和更新特定的、名为 Google 电子表格 在桌面应用程序中使用 C# 中的 OAuth 2.0 ?我自己正在研究它,如果我让它工作,我将 post 我的代码。
实际上只有两种方法可以访问 Google 驱动器,Oauth2 或类似于 Oauth1 的服务帐户。我认为您不能使用 public API 密钥访问 Google 驱动器,但我必须仔细检查一下。
有四种设置凭据的方法
- Public API访问(API键)用于public访问,这里不需要进行身份验证。 Google 书籍和 Google url 缩短器,我认为 google+ api 的某些部分也是如此。 (你没有提到这个但我提到了)
- 本机应用程序的客户端 ID(已安装的应用程序)。这主要是当重定向 URI 始终是本地主机时。如果您在本地测试 Web 应用程序,也可以使用它。 (这是 Oauth2 并且需要用户验证弹出浏览器的东西)
- 服务帐户:不是服务r帐户,它们用于您个人有权访问数据的帐户。这将不需要用户进行身份验证,因为您已经在后台为服务帐户设置了身份验证。示例:获取服务帐户电子邮件地址并授予其访问我的 Google 驱动器目录的权限将授予它向其上传文件的权限。
- web applications 对于 web 应用程序是肯定的,因为身份验证服务器 returns 身份验证的重定向 uri 是一个网站。 (Oauth2 将需要身份验证)
后台自动化运行如果你想在cron选项卡中设置一些东西运行你可以使用上面的任何一个。二和四将要求您将刷新令牌保存在某个地方以备后用,因为它们是 Oauth2。
GoogleAuthorizationCodeFlow 是 Google-dotnet-client lib
的旧版本
GoogleWebAuthorizationBroker 适用于 google-dotnet-client lib 的当前版本,如果您想使用任何 NuGet 包,您将使用它。较旧的版本不再开发,因此其中不会提供任何新功能。
您已经指向我的一个教程。所有这些的完整列表在这里 Google C# tutorials
几天来我一直在为此焦头烂额。我承认,我不是 "that kind of programmer" - 我写数学算法,不是网络、安全或协议程序员。我想我会分享我目前的知识,因为这似乎是一个有点 "bitty" 的话题。也许我还没有理解官方文档,但到目前为止我还在苦苦挣扎,我发现其他人也在努力解决我怀疑仍然是一项新兴技术的问题。我会在下面的评论中 post 这些链接。
据我了解,有三种使用 OAuth 2.0 和 Google Drive/Google Spreadsheets 的主要方法,它们的实现方式略有不同。
- 对于已安装的桌面应用程序 <== 这个 post 关注这个
- 对于服务器端服务
- 对于网络应用程序
对于已安装的桌面应用程序的 OAuth 2.0,似乎有两种方法可以做到这一点。一种是使用 GoogleWebAuthorizationBroker
,另一种是使用 GoogleAuthorizationCodeFlow
。我无法确定地证明这一点,但似乎前者在 2013 年的某个时候已被弃用,而后者现在是首选方法。
首先,有人认为 GoogleAuthorizationCodeFlow
现在是首选方式吗?我确实短暂地使用了 GoogleWebAuthorizationBroker
方法并只登录了一次,我能够 运行 一个 SpreadsheetsService.Query
但生成的令牌似乎只有一个小时有效,我还不能弄清楚如何刷新它。我怀疑 GoogleAuthorizationCodeFlow
可以解决这个问题。
其次,任何人都可以 post 任何工作代码来 检索和更新特定的、名为 Google 电子表格 在桌面应用程序中使用 C# 中的 OAuth 2.0 ?我自己正在研究它,如果我让它工作,我将 post 我的代码。
实际上只有两种方法可以访问 Google 驱动器,Oauth2 或类似于 Oauth1 的服务帐户。我认为您不能使用 public API 密钥访问 Google 驱动器,但我必须仔细检查一下。
有四种设置凭据的方法
- Public API访问(API键)用于public访问,这里不需要进行身份验证。 Google 书籍和 Google url 缩短器,我认为 google+ api 的某些部分也是如此。 (你没有提到这个但我提到了)
- 本机应用程序的客户端 ID(已安装的应用程序)。这主要是当重定向 URI 始终是本地主机时。如果您在本地测试 Web 应用程序,也可以使用它。 (这是 Oauth2 并且需要用户验证弹出浏览器的东西)
- 服务帐户:不是服务r帐户,它们用于您个人有权访问数据的帐户。这将不需要用户进行身份验证,因为您已经在后台为服务帐户设置了身份验证。示例:获取服务帐户电子邮件地址并授予其访问我的 Google 驱动器目录的权限将授予它向其上传文件的权限。
- web applications 对于 web 应用程序是肯定的,因为身份验证服务器 returns 身份验证的重定向 uri 是一个网站。 (Oauth2 将需要身份验证)
后台自动化运行如果你想在cron选项卡中设置一些东西运行你可以使用上面的任何一个。二和四将要求您将刷新令牌保存在某个地方以备后用,因为它们是 Oauth2。
GoogleAuthorizationCodeFlow 是 Google-dotnet-client lib
的旧版本GoogleWebAuthorizationBroker 适用于 google-dotnet-client lib 的当前版本,如果您想使用任何 NuGet 包,您将使用它。较旧的版本不再开发,因此其中不会提供任何新功能。
您已经指向我的一个教程。所有这些的完整列表在这里 Google C# tutorials