【发布时间】:2012-10-30 08:35:42
【问题描述】:
我认为我了解 OAuth 2.0 在移动应用程序或网站环境中的工作原理 - 我也不是。
我有一个 C++ 命令行 应用程序,我想授予对其中一项 Google 服务 (Google Fusion Tables) 的访问权限,但我认为这个问题适用于任何 Google 服务,或者见鬼,也许还有任何必须处理 OAuth2 的命令行应用程序。
我有用户名。我有密码(用户输入的)。我需要获得一个令牌,这样我才能通过 Curl 拨打电话。最简单的方法是什么?
更新 1:
查看文档后,似乎最不痛苦的 OAuth2 流程将是 "Installed Application" 一个。
我的想法是,我的命令行工具将在不需要令牌的情况下发出对公共表的请求(但似乎我们仍然需要从 Google 发送 AppID,我可以从 Google API 仪表板获取)。
每当我的命令行工具需要使用私有资源时,该用户都需要提供 Google 提供的授权码(然后我的命令行工具可以使用它来获取可用的令牌)。如果用户没有在命令行中提供授权码,我的工具只会打印一个链接,用户可以将其粘贴到 URL 以生成授权码。链接如下所示:
一旦用户接受,她必须将该授权码粘贴到终端,以便命令行工具可以使用它。命令行工具将使用授权代码向 Google 请求 token,最后我可以使用 Google 令牌进行 API 调用。
我还不清楚一些事情。授权码会变吗?如果是这样,我似乎需要在某处保存令牌并刷新令牌,以便每次令牌过期时都可以重用刷新令牌。
只有我一个人,还是这整件事看起来像疯了一样,只是为了让我可以从命令行使用 Google API?
我通常会使用ClientLogin flow,但似乎一切都表明它很快就会被弃用。
【问题讨论】:
标签: command-line oauth authorization google-api oauth-2.0