3

我目前正在实施一个 Oauth 消费者服务,该服务也将使用 Soundcloud 作为 Oauth 服务提供者。但是我遇到了以下问题:以 Facebook 或 Twitter 为例,你去那里,你登录,你填写许可表,然后你被重定向回你的应用程序。如果您第二次去那里,并且您已经登录,您基本上会跳过所有步骤并立即重定向回来。这意味着,Facebook 认识到您已经向该第三方服务授予了许可,因此它不会不断地征求您的许可。

这就是我使用 Soundcloud 时发生的事情。基本上每次我将用户重定向到 Soundcloud Oauth 连接端点时,都会显示权限表单,即使我之前已经授予了该第 3 方服务的权限。我不得不每次都按“连接”,这从用户的角度来看是一种拖累(您可以向同一实体授予多少次权限)。我的问题是:是否有一个参数可以让 soundcloud 识别/验证用户帐户对特定第 3 方服务的先前权限?或者这是 Soundcloud Oauth 设计实现,我们必须忍受它?

编辑:

也许这不清楚,但每次我在 soundcloud 中按“连接”时,都会生成并传递一个新的访问令牌。由于我的应用程序使用此访问令牌来识别其用户,因此每次我想登录时访问令牌都会更新,这对我来说效果不佳,这让我每次都有效地“注册”。综上所述,我想将之前归属的令牌获取到我的帐户,这样我就可以在我的数据库中查找,识别它并登录他。

我也在寻找一种不涉及在客户端中存储可能被清理的状态的解决方案。

4

1 回答 1

2

您可以做的是将用户的 oauth 令牌存储在本地存储中,并在以后的会话中重用它。这就是 soundcloud.com 上发生的情况。

更长的解释:

当您使用 Connect 流程时,用户会通过 SoundCloud 进行身份验证(通过使用用户名/密码、Facebook Connect 或 soundcloud.com 上的现有会话),然后当它成功时,您的应用会获得一个 oauth 令牌对于那个用户。这将传递到为您的应用注册的回调页面。

该令牌是让用户“登录”所需的唯一信息。除非令牌过期(按时间或用户手动撤销它),否则您可以在以后的会话中重用它。

我想我对您的应用程序的设计有点困惑:在哪里以及如何使用 oauth 令牌?我认为与其使用令牌作为标识符,也许用户的永久链接可能会更好?如果您有 oauth 令牌,您可以通过查询找到永久链接api.soundcloud.com/me

于 2013-01-27T13:35:36.667 回答