【问题标题】:OAuth2 w/ Google Client API 1.8.1带谷歌客户端 API 1.8.1 的 OAuth2
【发布时间】:2014-06-13 22:24:51
【问题描述】:

我一直在 .NET Web 应用程序中使用 Google 客户端 API - 但需要更新到最新版本(既要使用最新代码,又不需要 DotNetOpenAuth.dll。)最新版本(1.8.1) 具有完全重新设计的 OAuth 界面(使用 google.apis.auth),我似乎无法开始使用它。

之前我编写了代码来处理生成 AuthorizationURL(根据需要)并创建 IAuthenticator 和 IAuthorizationState 对象 - 根据需要将刷新令牌存储在 sql 数据库中。我还打算根据需要检索有关用户的“UserInfo”(一旦通过身份验证)。

现在 - 我不清楚如何处理 AuthURL 的生成(我必须 100% 手动完成吗?)以及在使用客户端 API 时我需要如何/什么传递给 BaseClientService.Initializer(例如 Google 云端硬盘。)

另外——以前我写了从数据库中“存储”和“检索”凭据的方法——现在看来我需要编写一个基于 IDataStore 的类?但我不确定这是否正确(更不用说在任何地方找到像样的样本/文档了。)

最后 - google.apis.auth 似乎没有处理与 UserInfo 相关的任何事情 - 我必须抓住 google.apis.oauth2 - 但那个 .dll 甚至有更少的文档/示例代码。

关于从哪里开始有什么建议吗? google.apis 示例代码似乎很适合执行基本的 api 任务,但所有 Oauth2 信息都非常基本,使用文件数据存储并且似乎被掩盖了。

谢谢!

【问题讨论】:

  • 如果您在 SDK DLL 地狱中,可能值得考虑将其全部扔掉并进行自己的 OAuth http 调用。您会惊讶于它的简单程度。

标签: google-oauth google-api-dotnet-client


【解决方案1】:

首先,看看https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth。您可能需要的所有文档都在那里,如果缺少什么,请告诉我们!

您是对的,您已经实现了 FileDataStore,我们也计划为下一个版本创建 EFDataStore。

【讨论】:

  • 我担心这可能是“答案” - 该链接没有提供有关生成 AuthorizationURLs 的任何详细信息(我猜它假设所有之前都已处理),实现自定义 IDataStore,访问UserInfo - 或在类似于现实生活场景的情况下处理任何过程(尽管我再次猜测这最后一部分是由于我的理解崩溃。)是否还有其他地方可以寻找任何“真实世界”基于网络详情?
  • 如果您需要 UserInfo 数据,您可以添加其范围 ("googleapis.com/auth/userinfo.profile")。关于生成授权 URL - 如果您使用已安装的应用程序,则无需执行任何操作。如果您工作使用 Web 应用程序 - 按照developers.google.com/api-client-library/dotnet/guide/… 处的说明进行操作
  • 对我没有多大好处 - 因为这是一个网络表单应用程序 - 而不是 MVC 应用程序(实际上 - 现有的 Google API 集成是在类库中完成的。)我一直在尝试 w/ GoogleWebAuthorizationBroker - 它会自动重定向 - 但它似乎使用固定的 REDIRECT URL。
  • 似乎很多简单/有用的功能都被隐藏起来了。我可以使用 GoogleAuthorizationCodeFlow 生成一个身份验证 url - 但似乎没有一种方法可以“强制”提示访问,而无需使用自定义流程覆盖流程。此外 - 一切似乎都是异步的 - 这是有道理的,但在尝试基于网站的简单解决方案时似乎提出了重大挑战。
  • peleyal - 到目前为止,您一直很友好地回答我的问题 - 我希望您可以就某一项提供指导。它围绕作为 API 一部分的各种异步 oauth2 调用展开。从 Web 应用程序同步调用它们的正确方法是什么?我已经用同步版本包装了异步方法(使用等待),这些同步版本使用“.Result”返回一个值。除非我使用“.ConfigureAwait(false)”,否则这种死锁 - 但我看到关于不这样做的神秘警告......
猜你喜欢
  • 2017-10-28
  • 1970-01-01
  • 2013-09-05
  • 2015-08-24
  • 2014-05-04
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
  • 2012-06-17
相关资源
最近更新 更多