0

我正在尝试使用 Soundcloud API 在开源 DAW 应用程序 (Ardour) 中实现集成的“导出”功能。

至少对于初稿,似乎获得经过身份验证的令牌的最简单方法是使用“用户凭据”流程。所以我以我自己的帐户为例。我正在使用 libcurl 以编程方式生成此请求:

https://api.soundcloud.com/oauth2/token?client_id=e7ac891eef866f139773cf8102b7a719&client_secret=CLIENT_SECRET&grant_type=password&username=ben@harrisonconsoles.com&password=MY_PASSWORD

结果是:“404 - 未找到”

几个问题:

1)任何想法“404 - Not Found”在这种情况下意味着什么?我的用户名格式错误吗?我打错字了吗?或者用户凭据工作流程不再可用?

2) 这是一个开源应用程序,因此 client_id 和 client_secret 实际上对全世界都是可用的。这有什么后果(如果有的话)?

请注意,我不是 curl/web 集成方面的专家(尽管我能够使用 libcurl 从 Freesound.org 导入声音)——所以也许我遗漏了一些非常明显的东西。

4

1 回答 1

0

看起来您正在向该 URL 发出 GET 请求。OAuth2 令牌端点仅支持 POST 请求。此外,参数必须在请求正文中发送,而不是作为查询字符串的一部分。使用 curl 命令行实用程序,它看起来像这样:

curl -X POST -D - https://api.soundcloud.com/oauth2/token -F'client_id=YOUR_CLIENT_ID' \
   -F'client_secret=YOUR_CLIENT_SECRET' -F'grant_type=password' \
   -F'username=YOUR_USERNAME' -F'password=YOUR_PASSWORD'

从技术上讲,我们应该发回 405 而不是 404。我会为此提交一个错误,感谢您指出。

您绝对不想分发您的客户端凭据。您的客户端 ID 和客户端密码将您的应用程序唯一标识到 SoundCloud。如果您要分发这些,任何其他应用程序开发人员都可以使用这些值来创建一个看起来像您的应用程序。如果其中一个应用程序违反了 SoundClouds 服务条款,我们将不得不切断对客户端 ID 的访问,从而也禁用您的应用程序。

此外,虽然支持用户凭据流,但仅在无法使用更流行的授权代码流时才建议使用。大多数用户更熟悉授权代码流程。它允许您让用户授权访问您的应用程序,而无需他们向您的应用程序提供凭据。不推荐使用用户凭据流程的主要原因是通过 Facebook Connect 注册的用户没有密码,因此无法将您的应用程序连接到他们的 SoundCloud 帐户。

对于桌面/移动应用程序,您可以在应用程序注册过程中指定一个重定向 URI,该 URI 使用自定义协议方案(例如 myapp://),它将控制权返回给您的应用程序。执行此操作的确切方法因平台而异。这意味着您不必拥有正在运行的 Web 服务来调解身份验证流程。

如果您有任何后续问题,请告诉我,我将编辑我的答案以进行详细说明。希望有帮助!

于 2012-04-05T13:09:02.333 回答