【发布时间】:2014-08-16 00:04:32
【问题描述】:
我正在使用 Spotify Web API 来获取播放列表列表和用户跟踪。授权工作正常。我也确实得到了曲目的详细信息。但在那之后,我想从 spotify 注销用户并允许新登录。 在用户从 spotify 帐户自动注销之前,有一个会话时间。但是用户可能没有耐心等待这么长时间并使用不同的 Spotify 帐户重新尝试。
是否有任何 API 可以从 spotify 中注销用户。
可以做什么。请帮忙。
【问题讨论】:
我正在使用 Spotify Web API 来获取播放列表列表和用户跟踪。授权工作正常。我也确实得到了曲目的详细信息。但在那之后,我想从 spotify 注销用户并允许新登录。 在用户从 spotify 帐户自动注销之前,有一个会话时间。但是用户可能没有耐心等待这么长时间并使用不同的 Spotify 帐户重新尝试。
是否有任何 API 可以从 spotify 中注销用户。
可以做什么。请帮忙。
【问题讨论】:
虽然使用 Spotify Web API 的应用程序无法注销用户,但它可以强制在登录过程中显示权限对话框。为此,请在调用https://accounts.spotify.com/authorize 端点时使用show_dialog 查询参数并将其设置为true。
如果有用户已经登录,会有一个(不是你吗?)链接来更改用户。
这适用于“授权代码”和“隐式授予”流程。您可以阅读Spotify Web API Authorization Guide 上有关show_dialog 参数的文档。
【讨论】:
您想简单地从 "spotify web api" 注销,那么您应该通过清除 身份验证令牌 来终止您的 spotify 会话,例如:
AuthenticationClient.clearCookies(getApplication());
【讨论】:
AuthorizationClient 是什么?或getApplication()。没有太多的上下文。
除了 José M. Pérez 他的回答之外,如果您真的想注销,似乎实现此目的的唯一方法是在用户浏览器中打开 Spotify 注销 URL:https://www.spotify.com/logout/
为了防止 CORB 保护,例如可以通过使用 JavaScript 打开一个弹出窗口并在 2 秒后关闭它来实现:
const url = 'https://www.spotify.com/logout/'
const spotifyLogoutWindow = window.open(url, 'Spotify Logout', 'width=700,height=500,top=40,left=40')
setTimeout(() => spotifyLogoutWindow.close(), 2000)
更新: https://accounts.spotify.com/en/logout 也可以使用,这将重定向到登录页面而不是 Spotify 主页,恕我直言。
【讨论】:
我使用提供的 asnwer @jpoppe 解决了这个问题。我不喜欢弹出窗口的想法,所以我使用了 iframe。
<iframe style={{display: 'none'}} src="https://spotify.com/logout"></iframe>
我发现的一个问题是,如果用户使用 facebook 登录,当使用 facebook 登录另一个帐户时,他们会在单击“使用 facebook 登录”按钮时自动登录。我找不到解决这个问题的简单方法。
【讨论】: