3

我需要一些指示,因为我迷路了。我正在开发 WinForms 中的一个非常小的应用程序,它使用 Google API。为了能够获取用户数据,我需要获取他的用户名和密码,直到这一部分一切正常,但是,我没有任何保存用户的能力。

现在,我不想每次都询问用户名和密码,所以我试图找到一种安全的方法来做到这一点。

我问了一个关于我应该把这些信息放在哪里的问题,得到的答案是保存用户名和密码不是个好主意,我应该改用 Google OAuth 2.0。

但是,我的问题是我需要为 Google OAuth 2.0 使用网络浏览器,现在我不确定如何在我的 WinForm 应用程序中实现它。

我的问题:

  1. 是否可以从网络浏览器获取数据到我的应用程序?
  2. 我应该寻找不同的方式来获取用户数据吗?(任何建议都会很棒)。
4

3 回答 3

2

您需要知道的两条最重要的信息是您应该使用客户端库为您完成工作,并且您应该使用“已安装的应用程序”流/客户端类型。

使用此处的教程,它将引导您使用已安装的应用程序: https ://code.google.com/p/google-api-dotnet-client/wiki/GettingStarted

您确实必须使用 Web 浏览器从用户那里获取凭据,但是一旦这样做,您应该能够重新使用这些凭据(刷新令牌)而无需重新提示。该库使将这些凭据从浏览器移动到您的应用程序变得简单。

于 2013-01-05T02:18:09.430 回答
0

在非浏览器应用程序中执行 OAuth2 称为“2-legged OAuth2”。

服务器端的三足 OAuth2 用于浏览器身份验证。它由以下步骤组成:

  1. 应用程序导航到您的网络应用程序
  2. 您的网络应用使用正确的获取参数重定向到 Google 中的 OAuth2 端点
  3. Google 对您的用户进行身份验证,并使用用户令牌将浏览器重定向回您的网络应用
  4. 您的网络应用程序使用令牌连接到 Google 服务

客户端的 2-legged OAuth2 包括在WebBrowser您的应用程序中托管控件并遵循 3-legged 身份验证的步骤 2-3:

  1. Web 浏览器控件转到 Google 中的 OAuth2 端点,假装您的 Web 应用程序将通过身份验证
  2. Web 浏览器控件允许用户进行身份验证并重定向回您的 Web 应用程序
  3. 但是您甚至没有任何网络应用程序 - 在重定向回您的应用程序时,您会捕获redirect网络浏览器控件的事件并提取身份验证令牌

有了用户令牌,winforms 应用程序就代表用户连接到 Google 服务。

于 2013-01-04T14:26:14.367 回答
0

简而言之:您必须将注意力集中在客户端库中的 OAuth 2.0 中。

因此,该文档有非常好的描述和您需要处理的示例。

虽然某些服务根本不需要身份验证,或者只使用您的开发人员密钥,但大多数服务都需要访问某些用户数据。用于访问用户数据的身份验证模型是 OAuth2.0。

源参考 - google-api-dotnet-client OAuth2.0

于 2013-01-04T14:28:10.790 回答