SoundCloud API:重定向网址

时间:2015-04-12 18:13:33

标签: soundcloud

考虑这个示例来自PHP的身份验证https://developers.soundcloud.com/docs/api/guide#authentication似乎建议您在用户通过身份验证过程时将重定向URL作为参数传递:

require_once 'Services/Soundcloud.php';

// create client object with app credentials
$client = new Services_Soundcloud(
  'CLIENT_ID', 'CLIENT_SECRET', 'REDIRECT_URL');

// redirect user to authorize URL
header("Location: " . $client->getAuthorizeUrl());

注意构造函数调用中的'REDIRECT_URL'参数。

这似乎表明我可以将任意重定向url作为参数传递,就像你可以用Twitter做的那样(API非常相似)。

但是,如果我传递的网址与为应用程序配置的唯一重定向网址不匹配,则在用户重定向到我的网址时出现错误: 的错误= redirect_uri_mismatch&安培; ERROR_DESCRIPTION = +的重定向+ URI +提供+确实+ +不匹配+ A +预注册+值

那么,如果唯一有效的值是为应用程序配置的重定向URL,该参数应该是什么?

如果用户只能在身份验证后重定向到一个固定网址,那么你应该如何处理身份验证?这使得API完全无法使用。当您有用户登录任何API(例如Twitter或Facebook)时,您需要将它们返回到他们点击该链接以登录的页面,这是一个荒谬的限制网址是独一无二的。我见过的其他社交网络api都没有这个限制。

SoundCloud API真的如此缺陷还是我遗失了什么?

1 个答案:

答案 0 :(得分:2)

我得到了Glen-Scott的答案,他是php-soundcloud库的作者(围绕这个糟糕的API的相当不错的包装器)提供了一个解决方法。这很痛苦,因为它涉及额外的重定向,但它是所有API允许的。

https://github.com/mptre/php-soundcloud/issues/36

我引用:

  

API不允许任意URL。如你所知,这是不同的   大多数其他oAuth支持的社交网络API。我可以解决这个问题   建议使用state参数传回返回的URL。   您可以在生成授权URL时执行此操作:

            $client->getAuthorizeUrl(
                array(
                    'state' => 'http://example.com/return'
                ) You'll get the state parameter added to the static redirect URL. For example, if you set your redirect URL to
     

http://example.com/callback然后SoundCloud将重定向   经过身份验证的用户   http://example.com/callback?state=http://example.com/return

     

您的回调脚本需要查找状态GET参数,   并使用它重定向。