Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用“用户凭据”流通过libcurl获取身份验证令牌_Curl_Libcurl_Soundcloud - Fatal编程技术网

使用“用户凭据”流通过libcurl获取身份验证令牌

使用“用户凭据”流通过libcurl获取身份验证令牌,curl,libcurl,soundcloud,Curl,Libcurl,Soundcloud,我试图使用SoundCloudAPI在开源DAW应用程序Ardour中实现集成的导出功能 至少在初稿中,获取经过身份验证的令牌的最简单方法似乎是使用用户凭据流。所以我以我自己的账户为例。我使用libcurl以编程方式生成此请求: 结果是:404-未找到 有几个问题: 1.你知道404-未找到在这种情况下意味着什么吗?我的用户名格式是否错误?我打错了吗?或者用户凭据工作流不再可用 2这是一个开源应用程序,因此客户端id和客户端机密实际上将向全世界公开。如果出现这些情况,会产生什么后果 请注意,尽管

我试图使用SoundCloudAPI在开源DAW应用程序Ardour中实现集成的导出功能

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

结果是:404-未找到

有几个问题:

1.你知道404-未找到在这种情况下意味着什么吗?我的用户名格式是否错误?我打错了吗?或者用户凭据工作流不再可用

2这是一个开源应用程序,因此客户端id和客户端机密实际上将向全世界公开。如果出现这些情况,会产生什么后果


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

看起来您正在向该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。我将为此提交一个bug,谢谢你指出它

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

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

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


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

谢谢你,保罗!我将研究libcurl需要什么来实现这一点。关于秘密身份证。。。这是一个开源程序,所以除了发布它别无选择。当然,应用程序不可能破坏Soundcloud TOS,因为经过身份验证的用户才是罪魁祸首?除了将声音归因于应用程序之外,为什么这很重要?最后,关于授权:我愿意使用授权代码流,但在桌面应用程序的上下文中我不理解它。它似乎需要第三方服务器作为某种中介。希望我只是糊涂了。如果你是以开源的形式发布的,你应该去掉客户端凭据,让应用注册成为安装/设置过程的一部分。问题是,你在泄露证件。例如,如果一个有恶意意图的开发人员想要创建一个有害的应用程序,他们可以使用你的应用程序凭据并冒充你的应用程序。用户会认为他们正在验证您的应用程序。总之,共享凭据会破坏信任关系。泄露客户端机密的应用程序几乎肯定会被停用。修改我的回答,以包含有关在桌面应用程序中使用身份验证代码流的详细信息。还提到了为什么不推荐用户信任流。另外,如果你觉得我的答案很有帮助,那么接受它是一个很好的做法:-希望这有帮助。如果您有任何其他问题,请告诉我。关于客户凭据:好的,我会设法解决。关于用户凭证流:这是一个专业的声音编辑/混合应用程序。你是说用户会因为必须设置Soundcloud密码而感到不便,还是说如果他们使用Facebook Connect,他们将无法设置密码并遵循用户凭据流如果用户使用Facebook Connect登录到他们的Soundcloud帐户,他们将没有密码,因此将无法使用用户凭据流。