2015-04-12 107 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像這樣的時候你可以這樣做並使用它重定向。