i think 我了解oauth 2.0在移动应用或网站的上下文中的工作方式 - 我的情况也不是。
我有一个C 命令行我想访问Google服务之一(Google Fusion Tables),但我认为这个问题适用于任何Google服务,或者也许还必须处理OAuth2的任何命令行应用。
我有用户名。我有密码(用户键入它)。我需要获取一个令牌,以便可以通过卷发打电话。什么是最简单的方法?
更新1:
浏览文档后,似乎最小痛苦的OAuth2流将是"已安装应用程序"。
我想的是,我的命令行工具将在不需要令牌的情况下向公共桌子提出请求(但似乎我们仍然需要从Google那里发送我可以从Google APIS仪表板上获得的appid)。p>每当我的命令行工具需要使用私有资源时,将需要该用户提供google提供的授权代码(然后我的命令行工具可以使用该范围来获取可用
授权代码仅有效一次。交换后 - 并获得了刷新令牌和访问令牌 - 它将不再可用。只需丢弃它。它仅一次性使用,您不再需要它。您需要做的就是只保留/保存/持续刷新令牌在某些本地文件中以进行重复使用。
刷新令牌是重要令牌。它使您可以在无限的时间段内访问API,因为您可以使用它来编程获取新的访问令牌(有效的1H)。检查有关该操作的刷新令牌。 Google APIS客户端库通常会自动透明地处理刷新令牌,但是由于我们没有C 客户端LIB,因此您需要自己执行此操作。我们使用的一种技术是,我们在向API请求时捕获403个错误(这表示无效的访问token ),在这种情况下,我们会进行刷新以获取新的访问token ,然后自动重试最初失败的操作。 将为您提供最佳用户体验的流量是使用服务器端Web应用程序流。尽管它是更多的工作,但可以在安装和/或命令行应用程序上使用它。这是: 就是这样,您现在拥有刷新和访问令牌(从步骤4开始),然后在杀死浏览器后又回到应用程序中。 客户登录已弃用。它消失了,不适合新的API。Google不希望用户给您他们的密码,因为您可能很想存储它,并且您可能会被黑客入侵:))此外,它还可以访问太多信息,因为您可以使用他们的Google Checkout帐户或更改密码以窃取他们的帐户。当前,从安全角度来看,唯一的方法是使用这些三足的验证系统(例如OAuth2)并阻止使用密码,以便用户摆脱向第三方提供其用户名和密码的习惯。当然,oauth2在桌面/命令行应用程序中更难使用... 如果您不想要或无法启动Web服务器来侦听代码,则可以使用 当心并非所有OAuth 2提供商都支持这一点,但至少Google和Facebook都可以。回答有关"已安装应用程序"流的问题:
我的建议:
http://127.0.0.1:7777
)http://127.0.0.1:7777
http://127.0.0.1:7777
。为什么所有这些混乱?
OOB替代品
oob
OAUTH FLOW。它通过简单地将oob
指定为重定向URI来起作用。在这种情况下,将向用户显示一个页面,上面写着"这是您的auth代码。将其粘贴到您的应用程序中。"。在您的应用程序上,您只需在文本字段和VOILA中粘贴用户粘贴验证代码即可。这是一种更糟糕的用户体验,但在某些情况下可以更强大,并且在更多的环境中工作,尤其是低技术环境。