Windows 桌面应用的 Blogger API 身份验证

Authentication with Blogger API for Windows desktop app

我正在尝试开发一个 C# Windows 应用程序来执行一些自定义 Google Blogger 任务。使用 Google.Apis.Blogger.v3 Nuget 包,我已经成功查询了我的 public 测试博客的帖子,但现在我想让它能够查询私人博客的帖子并在博客上执行管理任务.

我浏览了 this page 和 OAuth 上的一系列相关页面。它们看起来都很模糊。该页面是我最接近了解如何通过 API 实际使用 OAuth 的页面。不过,我不明白为什么它使用硬编码字符串 "user"。 "user"从哪里来?

此外,我不明白这将如何让我访问博客。我猜它会验证我的应用程序,但我的应用程序无权管理它想要的任何博客。我的应用程序的用户是否必须获取自己的 OAuth ID 和密码并将其提供给我的应用程序?对用户不友好。我想象我的应用程序只允许用户输入 URL 到他们的博客、他们的用户名和密码,然后通过 API 以该用户身份进行身份验证并在每个请求中发送该令牌.有没有办法让我只使用用户名和密码访问博客?

我通过查看其他一些有更好记录的 API 弄明白了。 youtube API docs had a page 更详细地解释了它。基本上,Google 不希望用户在您的应用中输入他们的凭据。相反,您将他们发送到允许他们授权您的应用程序的 google 页面。您将您的 OAuth 信息传递到该页面,以便它可以识别您的应用程序并询问用户是否允许访问。这是桌面应用程序有点毛茸茸的地方。该页面可以 post 返回到本地主机 URL,但由于大多数用户没有 Web 服务器,它还可以选择将响应放在响应网页的标题中。查找 Google oauth redirect_uri 参数以获取相关信息。

Google .NET API 内置了对此的支持(参见 GoogleWebAuthorizationBroker.AuthorizeAsync and UserCredential). It can read the client_secret.json file generated by the developer console for you, open the client browser and send the oauth request for access, read the response, and close the browser when it's done. This link with a Console App example 确实帮助了我。

我唯一不清楚的部分是发送到 GoogleWebAuthorizationBroker.AuthorizeAsync() 的硬编码 "user" 参数,但它似乎有效。