2

last.fm API 认证

我需要连接到一个 URL,让用户进行身份验证,然后继续。我怎么做?我有打开 URL 的部分,但不知道如何等待。

            // 3. Request authorization from the user
            String authURL = "http://www.last.fm/api/auth/?api_key=" + key + "&token=" + token;
            java.awt.Desktop browser = java.awt.Desktop.getDesktop();
            java.net.URI uri = new java.net.URI(authURL);
            browser.browse(uri);

这是我第一次使用 Web API。我尝试在 Google 和 SO 上查找,但没有完全找到我要找的东西。

4

1 回答 1

1

很抱歉您选择此作为您对 API 的介绍。文档中的 5 秒显示您遇到的问题是他们的代码中的设计缺陷,来自文档:

如果用户没有登录 Last.fm,他们将被重定向到登录页面,然后被要求授予您的应用程序使用其帐户的权限。在此页面上,他们将看到您的应用程序的名称,以及第 1 节中提供的应用程序描述和徽标。一旦用户授予您的应用程序使用其帐户的权限,基于浏览器的过程就结束了,并询问用户关闭他们的浏览器并返回您的应用程序。

这是正确的。用户完成身份验证后,他们不会 ping 您。他们只是指示用户关闭浏览器。由于显而易见的原因,这很蹩脚:我们如何知道用户是否完成了它?我们没有。

您将构建您的应用程序,以便在用户返回后代码继续运行,可能会给用户一个按钮来按下“我完成了”。稍后,您将不得不处理用户从未在调用 API 的其他代码中进行身份验证的可能性。

是的,它坏了。例如,在用户完成基于浏览器的身份验证步骤后,oAuth 至少会使用令牌给您回电。在桌面应用程序中使用 oAuth 时,您只需启动本地网络服务器并在那里接收回调(显然需要正确配置 LAN)

于 2013-03-29T00:40:22.960 回答