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

标签 c# oauth-2.0 google-oauth

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

7年前关闭。




Improve this question




这几天我一直在扯头发。我承认,我不是“那种程序员”——我编写数学算法,也不是网络、安全或协议(protocol)程序员。以为我会分享我目前的知识,因为这似乎是一个有点“小”的话题。也许我还没有理解官方文档,但到目前为止,我一直在苦苦挣扎,我发现其他许多人都在努力解决我怀疑仍然是一种新兴技术的问题。我将在下面的评论中发布这些链接。

据我了解,将 OAuth 2.0 与 Google Drive 结合使用有三种主要方式。/Google Spreadsheets实现方式略有不同。

  • 对于已安装的桌面应用程序 <== 这篇文章的重点是
  • 对于服务器端服务
  • 对于 Web 应用程序

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

    首先,如果 GoogleAuthorizationCodeFlow 是正确的,有人会这样做吗?现在是首选的方法吗?我确实得到了 GoogleWebAuthorizationBroker方法工作和登录一次,我就可以运行 SpreadsheetsService.Query但似乎生成的 token 只有一个小时有效,我还不知道如何刷新它。我怀疑 GoogleAuthorizationCodeFlow可以管理这个。

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

    最佳答案

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

    有四种设置凭证的方法

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

  • 后台自动化运行如果您想在 cron 选项卡中运行某些设置,您可以使用上述任何一种。两个和四个将要求您将刷新 token 保存在某个地方以供以后使用,因为它们是 Oauth2。

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

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

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

    关于c# - 用于桌面应用程序的 Google 电子表格 OAuth 2.0 - 任何人都可以*简单*地使用它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28322197/

    相关文章:

    c# - 我的 InvokeRequied #2 有什么问题?

    c#追加字典替换的结果

    c# - WPF:如何从 DataGridRow 获取单元格值

    java - 使用不同凭据访问 Google Analytics 报告数据时出现空指针异常

    c# - 如何在我的程序中从站点获取图片?

    oauth-2.0 - Azure AD JWT token : how to see through which client secret it was granted

    api - PayPal API OAuth2 I/O 异常 : peer not authenticated

    用于 SSO 的 PHP + ADFS(通过 OAuth)- 如何设置 ADFS?

    google-api - 如何构建使用谷歌日历 api 的 web 应用程序而无需验证?

    android - 尝试 GoogleNetHTTPTransport 时“未找到 JKS”