Soundcloud as Oauth Provider:如何使其仅连接一次



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

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

编辑:

也许这并不清楚,但是每次我在soundcloud中按"连接"时,都会生成并交付一个新的访问令牌。由于我的应用程序使用此访问令牌来标识其用户,因此每次我想登录时都会更新访问令牌,这使我每次都有效地"注册",这对我来说效果不佳。总而言之,我想将先前归属的令牌获取到我的帐户中,以便我可以在我的数据库中查找,识别它并登录他。

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

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

更长的解释:

当您使用 Connect 流程时,用户将由 SoundCloud 进行身份验证(通过使用用户名/密码、Facebook Connect 或 soundcloud.com 上已经存在的会话),然后在成功时,您的应用程序将获得该用户的 oauth 令牌。这将传递到为应用注册的回调页。

该令牌是让用户"登录"所需的唯一信息。除非令牌过期(按时间或用户手动吊销令牌),否则您可以在将来的会话中重复使用该令牌。

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

最新更新