Spotify Windows 桌面应用程序如何对用户进行身份验证?

Posted

技术标签:

【中文标题】Spotify Windows 桌面应用程序如何对用户进行身份验证?【英文标题】:How does the Spotify Windows desktop application authenticate the user? 【发布时间】:2012-07-25 13:45:37 【问题描述】:

我注意到 Windows 桌面 Spotify 应用程序要求我在登录屏幕中输入我的 Facebook 用户名和密码。我想知道幕后发生了什么。

当我在浏览器中更改我的 fb 密码时,我必须在 Spotify 桌面应用程序登录屏幕中使用新密码。甚至在某些情况下,Spotify 桌面应用程序会向我显示一个 fb 弹出窗口,我必须在其中授予 Spotify 本身的权限。

我知道 Spotify 使用嵌入式 Chromium 浏览器引擎来完成所有繁重的工作。但是这样做不违反 Facebook 的 TOS 吗?

我的意思是,Spotify 是否会将我的用户名和密码发布到 facebook login.php 并拦截结果页面以获取我的 cookie?是否有记录在案的方式来代表用户以适当的方式处理登录 Facebook?

【问题讨论】:

【参考方案1】:

不,他们使用的是旧的且已弃用的 REST API 方法,称为 auth.login: https://developers.facebook.com/docs/reference/rest/auth.login/

显然,我不能阻止您在自己的应用程序中使用它,但考虑到该 API 的历史以及现在已完全弃用 REST API,依赖它是个坏主意。

相反,对于 Windows 桌面应用程序,我相信 Microsoft 提供了一个 Facebook C# SDK,它将包含理想的身份验证方法。我更熟悉他们为 Metro Apps 提供的新方法,称为Web Authentication Broker。

这些几乎只是在应用程序中加载一个 web 框架,让用户登录到 Facebook,然后显示权限对话框(如果需要)。从那里,应用程序可以存储用户的 UID,并且可能是他们在身份验证时收到的长期存在的 access_token。这样,他们只需要每 60 天要求用户重新登录一次。

Facebook 提供了other device-based authentication methods,但大多数仍处于私人测试阶段,目前唯一推荐用于桌面应用程序的一种是在标题Windows、OS X 和 Linux 原生应用程序下的this page (在页面底部)。

2013 年 12 月更新:自从我撰写此答案以来,Facebook 登录文档发生了重大变化,我想指出一些新增内容:

Manually Building a Login Flow 详细介绍了桌面应用程序可以用来登录用户的步骤。这里的新功能是,Windows 8 应用程序现在可以在登录对话框的 redirect_uri 中使用其深层链接 ID,这意味着它会在完成或取消时从登录对话框返回其应用程序的多任务。这是对之前 WebView 设置的改进,因为用户的默认浏览器可能已经让他们登录到 Facebook。 Login for Windows Phone 是 Windows Phone 8 应用程序使用的特殊指南。

【讨论】:

谢谢!实际上,我们的桌面应用程序中也嵌入了 Chromium。但是,如果我在我们的桌面应用程序中向用户显示“使用 facebook 登录”按钮,那么用户体验会有些奇怪: 因为一开始没有cookie,用户被重定向到功能齐全的fb登录屏幕。在那里,他不仅可以登录,还可以注册并最终开始上网。所以登录体验被严重破坏。任何想法如何让用户登录和验证桌面应用程序而不会出现这种糟糕的体验?

以上是关于Spotify Windows 桌面应用程序如何对用户进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

如何开发 Spotify 桌面应用程序,现在 Libspotify 已停产

Android 应用程序如何充当桌面应用程序的遥控器? (Spotify)

open.spotify.com 如何运作?

以编程方式控制 Spotify 桌面播放器

Spotify API,桌面应用程序

如何从 Spotify 拖放到 Winforms 应用程序