2014-10-11 65 views
0

我不是一個有經驗的程序員,並且第一次使用API​​,所以請原諒我(缺乏)知識。我打算創建一個鏈接您的Spotify帳戶的網站,並根據EchoNest的音樂API推薦曲目。設置在託管服務器上的Spotify API

我已經按照Spotify教程(在這裏:https://developer.spotify.com/web-api/tutorial/#calling-the-spotify-accounts-service)鏈接您的Spotify/FB的詳細信息,並通過您的機器上安裝的本地主機在您的網站上打印它們。我最初的測試工作正常,我可以從Spotify獲取我的詳細信息,一切都很好。

但是,當我將重定向URI更改爲我的服務器和域名時,整個過程失敗。我編輯了我的Spotify開發人員詳細信息,以便使用我的實際Web服務器進行更新。 (本地主機:8888)會調用我的主頁,隨後(localhost:8888/login)會將您鏈接到Spotify登錄頁面,然後是自動(localhost:8888/callback )當授權被授予時到您的網站。

但是,當我將文件上傳到我的web服務器時,編輯的腳本包含我的域名而不是localhost8888(對於那些感興趣的人,我的jumpmyjukebox.com),我收到錯誤消息,說找不到/ login頁面的頁面,該過程的開始。

我是否需要手動爲/ login設置頁面還是缺少一個關鍵元素?

我已經獲取和編輯這些文件的位置:(https://github.com/spotify/web-api-auth-examples

感謝的人誰可以/也將有所幫助,雖然我比較上,我對這個完全沒有教導這樣的事情交換這對許多人來說似乎「顯而易見」對我來說並不那麼重要!

回答

1

我檢查了你的網站,當我點擊「使用Spotify登錄」鏈接並跳轉到我的jumpmyjukebox.com/login時,確實出現了404(未找到)錯誤。發生這種情況是因爲/ login路徑不是由您的Web服務器處理的。

運行在spotify-web-api-auth-examples/authorization_code/app.js中的代碼偵聽/ login的請求,並將用戶重定向到Spotify網站上的URL。

這是app.js處理/登錄中的代碼。

app.get('/login', function(req, res) { 

    var state = generateRandomString(16); 
    res.cookie(stateKey, state); 

    // your application requests authorization 
    var scope = 'user-read-private user-read-email'; 
    res.redirect('https://accounts.spotify.com/authorize?' + 
    querystring.stringify({ 
     response_type: 'code', 
     client_id: client_id, 
     scope: scope, 
     redirect_uri: redirect_uri, 
     state: state 
    })); 
}); 

正如你可以看到,當有人請求/登錄,他們只是簡單地重定向到https://accounts.spotify.com/authorize。一些查詢參數被附加到URL中,包括重定向URI,您的應用程序需要運行的範圍。在用戶填寫了他們的憑證並且批准了你的應用程序的範圍之後,它們被重定向回你的應用程序的重定向URI。

看起來你似乎沒有在你的服務器上運行app.js中的代碼。這當然不是必需的,你可以使用任何你喜歡的代碼,用你喜歡的任何語言和框架。但是,如果您正在運行其他內容,請確保您的服務器處理/登錄,如果要使用與示例相同的功能。

+0

謝謝你,邁克爾。爲我清理它。如果可取的話,我寧願堅持使用通過app.js調用API的最新方式。看來服務器根本沒有識別這個文件,我已經聯繫他們了。如果我要改變我使用的語言,你會推薦什麼? – 2014-10-15 10:21:18

+0

沒問題。我也在這個平臺上工作,因此對於難以設置或使用的任何反饋意見是值得讚賞的。如果你喜歡JavaScript,我建議使用Express運行Node。在這種情況下,示例應用程序應該在您的服務器上開箱即用。我不確定你的意思是「服務器根本不識別該文件」。您是否在服務器上啓動了帶有Node的app.js? – 2014-10-15 12:30:59

+0

除了上傳文件之外,我還沒有在我的服務器上安裝任何東西......我被告知我不需要在我的服務器上安裝節點?如果我必須這樣做,我該如何在我的服務器上安裝節點?通過找不到,我的意思是,app.js沒有運行,因爲我輸入了一個測試命令來檢查應該在文本中發佈'運行腳本'的腳本並且什麼也沒有出現。 – 2014-10-15 15:31:55