6

我需要与只支持 OAuth2 的 API 交互。

问题是,我想编写一个纯粹的服务器端应用程序,它应该坐在那里,而不需要 GUI 每天轮询 API。

API 使我能够以编程方式获取应用程序令牌,但看起来我需要实现整个 GUI 流程才能获取后续访问令牌。这是因为我需要通过应用程序提供商基于 Web 的登录屏幕登录。

看起来我需要获取该访问令牌,并将其作为我的服务器端凭据复制出来,并在其中重新创建它。如果它过期或变坏,我需要通过 GUI 流程返回以获取我的服务器端访问令牌。

我的理解是否正确,因为这感觉很笨拙?

具体来说:

我可以避免实施我们链接到应用程序提供商登录表单的过程吗?

这样做是否正确,我必须取消选择访问令牌并将其存储在我的服务器端应用程序中。我似乎无法控制它是否会过期?

我可以看到,例如 Facebook 专门支持服务器端和客户端流。我想知道我是否在 OAuth 2 的这个特定实现中遇到了限制?

4

2 回答 2

4

我不知道您实际上希望应用程序如何运行,但有一件事是肯定的 - 您必须输入一次用户凭据。

一旦您进行身份验证和授权(关于自动身份验证的 SO 上有很多未解决的问题),您的应用不仅会获得访问令牌,还会获得刷新令牌。刷新令牌正是您在用例中所需要的。您可以将其存储在服务器端 - 刷新令牌没有到期时间。它一直存在到用户明确撤销权限。

对于任何 OAuth 服务提供商,都有一个令牌交换端点,您可以在其中将刷新令牌交换为(刷新令牌 + 访问令牌)对。因此,在后端(您的服务器),您可以随时点击此端点 - 获取短期访问令牌并执行您需要的操作。这为您节省了每次都遵循 GUI 流程的所有工作。

请参阅此链接 - https://developers.google.com/accounts/docs/OAuth2WebServer#offline

编辑 - 阅读您的评论后进行了一些更改。您只需要知道如何在您的应用程序中使用刷新令牌。

于 2013-05-10T06:40:11.267 回答
2

我发现我在这个问题中提出的问题的典型解决方案是使用 XAuth。

许多提供商(例如 Twitter 和我目前正在使用的应用程序)支持 XAuth 以提供简化的流程,而无需基于用户界面的身份验证。

BasicAuth、OAuth 和 XAuth 有什么区别?

于 2013-05-15T12:31:24.327 回答