2015-04-12 53 views
0

https://developers.soundcloud.com/docs/api/guide#authentication考虑这个例子从PHP认证似乎暗示你可以通过重定向URL作为参数时你流用户throught认证过程:的SoundCloud API:重定向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颇为相似)。

然而,如果我通过一个URL,它不符合配置的应用程序的唯一重定向URL,我得到一个错误,当用户被重定向到我的网址: 错误= redirect_uri_mismatch & ERROR_DESCRIPTION =的+重定向+ URI + +提供确实+ +不匹配+ A +预注册+值。

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

如果用户只能在认证后重定向到一个固定的URL,你应该如何处理认证?这使得API完全无法使用。当你有一个用户登录到任何API(例如Twitter或Facebook),你需要他们返回到从他们点击链接登录页面,这是一个荒谬的限制,即其URL是唯一的。没有其他我见过的社交网络API有这个限制。

的SoundCloud是真的API使有缺陷的还是我失去了一些东西?

+0

“是我见过的其他任何社交网络的API有此限制。”你可能没有看到它,但许多服务都这样做。 – PeeHaa

+0

“这使得API完全无法使用。”不,这意味着你必须自己处理它。 – PeeHaa

+0

我投票结束这个问题作为题外话,因为SC api是否有缺陷的问题是非常主观的 – PeeHaa

回答

2

我接到格伦·斯科特,在PHP-的SoundCloud库的作者(解决这个可怕的API一个相当不错的包装)谁提供了解决的答案。这很痛苦,因为它涉及到额外的重定向,但它是API允许的。

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

我引述:

的API不允许任意URL。正如你所指出的,这不像 oAuth支持的社交网络API。我建议的解决方法 正在使用state参数来返回您的返回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参数, : 生成授权的URL像这样的时候你可以这样做并使用它重定向。