日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
在JavaScriptSDK里使用SoundCloudAPI

 

為雨城等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及雨城網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、雨城網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

SoundCloud開(kāi)發(fā)出了一款可被開(kāi)發(fā)者使用的API,這款A(yù)PI能使開(kāi)發(fā)者獲得他們想要的幾乎任何數(shù)據(jù)。但是該API的用法有些混亂,特別是對(duì)初學(xué)者來(lái)說(shuō),因?yàn)榇藭r(shí)的SoundCloud API開(kāi)發(fā)文檔和文檔示例使用的都是SDK(軟件開(kāi)發(fā)工具箱)的不同版本。

SoundCloud介紹鏈接地址: http://baike.sogou.com/v128528573.htm

SoundCloud API和SoundCloud SDK之間有什么區(qū)別呢?從根本上說(shuō),SoundCloud API是一個(gè)URL的集合,它給開(kāi)發(fā)者提供了從SoundCloud服務(wù)器獲取數(shù)據(jù)的權(quán)限, 而SoundCloud SDK是為查詢SoundCloud API提前寫(xiě)好的庫(kù)(或者客戶端)。如果想了解更多關(guān)于這方面的內(nèi)容,點(diǎn)擊以下鏈接:http://stackoverflow.com/questions/834763/difference-between-an-api-and-sdk

在這個(gè)教程里,我們將學(xué)到如何訪問(wèn)SoundCloud API和如何簡(jiǎn)化使用SoundCloud SDK的過(guò)程。我們將從SoundCloud上學(xué)習(xí)如何設(shè)置SoundCloud SDK,然后接著編寫(xiě)JavaScript代碼來(lái)獲取SoundCloud數(shù)據(jù),播放音頻和更多SoundCloud提供的功能。

入門(mén)指南

Promises介紹鏈接地址: http://www.oschina.net/translate/what-is-the-point-of-promises?print

了解HTTP和API的概念和工作方式對(duì)你學(xué)習(xí)本教程將會(huì)有幫助。如果你想了解更多關(guān)于API的信息,我推薦你看看:An Introduction to APIs(對(duì)API的一個(gè)介紹。鏈接地址:https://zapier.com/learn/apis/)。同時(shí)知道一點(diǎn)關(guān)于異步JavaScript,promises和回調(diào)函數(shù)對(duì)你學(xué)習(xí)本教程也是有幫助的。在本文我們的代碼示例中使用了jQuery,所以如果你了解jQuery的基本知識(shí),那么你閱讀本文的代碼示例就不會(huì)那么痛苦。

為了使用JavaScript來(lái)開(kāi)始查詢SoundClound API,我們需要下載由SoundClound提供的JavaScript SDK。就像在文章開(kāi)頭提到的,這里共有兩個(gè)不同的SDK版本可以使用。

使用哪個(gè)版本的SDK呢?

這兩個(gè)版本的SDK的主要不同之處在于當(dāng)一個(gè)異步請(qǐng)求產(chǎn)生并將請(qǐng)求發(fā)送給SoundClound API時(shí)它們返回?cái)?shù)據(jù)的方式不同。***版本的SDK返回的是一個(gè)Promise,而另一個(gè)版本的SDK需要把一個(gè)回調(diào)函數(shù)作為一個(gè)參數(shù)返回。

我注意到一個(gè)問(wèn)題,隨著文檔使用的SDK版本,在該版本的SDK用戶登錄功能界面上似乎有一個(gè)問(wèn)題,這個(gè)問(wèn)題就是彈出的登錄窗口不會(huì)自動(dòng)關(guān)閉。

因此,為了簡(jiǎn)單起見(jiàn),并且因?yàn)槔习姹維DK更穩(wěn)定,我們將在文章示例中使用老版本的SDK來(lái)貫穿本教程。此版本的SDK將需要為客戶端的異步請(qǐng)求返回一個(gè)回調(diào)函數(shù)。

使用SoundCloud API

設(shè)置一個(gè)基本的HTML文檔

我們創(chuàng)建一個(gè)基本的HTML頁(yè)面,該頁(yè)面用作我們的主頁(yè)。我們?cè)谶@個(gè)頁(yè)面上 

  •    
  •    
  •  
  • 注意:我們?cè)贖TML頁(yè)面里的 

    可以通過(guò)下面的方法步驟測(cè)試一下SoundCloud的SDK是否在你的網(wǎng)頁(yè)中被正確加載:

    • 用瀏覽器打開(kāi)這個(gè)頁(yè)面(建議使用谷歌的Chrome瀏覽器)。

    • 在瀏覽器里打開(kāi)開(kāi)發(fā)者控制臺(tái)(在谷歌Chrome瀏覽器里打開(kāi)開(kāi)發(fā)者控制臺(tái)的快捷鍵是Ctrl+Shift+J)。

    • 在開(kāi)發(fā)者控制臺(tái)里輸入SC,然后按Enter鍵。SC就是剛剛我們?cè)贖TML頁(yè)面里包含的SDK創(chuàng)建的一個(gè)JavaScript對(duì)象。

    如果出現(xiàn)了未知的錯(cuò)誤,那就說(shuō)明SoundCloud的SDK沒(méi)有被正確加載。試著刷新一下,同時(shí)確定你的SDK文件(也就是sdk.js文件)的路徑是正確的。

    注冊(cè)一個(gè)SoundCloud App

    去注冊(cè)一個(gè)SoundCloud app,你需要做的就是擁有一個(gè)SoundCloud賬戶。如果你還沒(méi)有一個(gè)SoundClound賬戶,就去創(chuàng)建一個(gè)。通過(guò)注冊(cè)一個(gè) app,SoundCloud服務(wù)器就能夠驗(yàn)證我們的請(qǐng)求,這樣其他人就不可能以我們的名義來(lái)發(fā)送一個(gè)請(qǐng)求了。

    注意:如果我們不準(zhǔn)備在我們自己的網(wǎng)站中使用SoundClound用戶登錄功能,我們可以跳過(guò)這一步。這將在下面的部分解釋。

    • 打開(kāi)SoundClound app頁(yè)面。在這個(gè)頁(yè)面上所有我們已經(jīng)創(chuàng)建好的app都會(huì)被列出來(lái)。確保你登錄了你的SoundCloud賬戶。注意:你不用為了這個(gè)目的創(chuàng)建一個(gè)獨(dú)立的賬戶。你可以用同一個(gè)賬戶來(lái)為你的個(gè)人目的使用。

    • 點(diǎn)擊注冊(cè)一個(gè)新應(yīng)用按鈕。

    • 給你的app起一個(gè)名字,然后點(diǎn)擊復(fù)選框接受SoundCloud的開(kāi)發(fā)者政策條款。

    • 點(diǎn)擊那個(gè)大大的”注冊(cè)”按鈕,來(lái)完成app的注冊(cè)。

    在我們成功注冊(cè)之后,注冊(cè)頁(yè)面將直接跳轉(zhuǎn)到我們剛剛創(chuàng)建好的app設(shè)置頁(yè)面。在app設(shè)置頁(yè)面上,我們將看到我們的app客戶端ID,這個(gè)ID將會(huì)被用來(lái)驗(yàn)證授權(quán)我們的請(qǐng)求。我們可以關(guān)掉該頁(yè)面,然后現(xiàn)在開(kāi)始回調(diào)字段了。我們之后會(huì)用到這個(gè)客戶端ID的。

    初始化客戶端

    通過(guò)”初始化客戶端”,那也就是意味著我們使客戶端準(zhǔn)備好在它和SoundCloud API之間做數(shù)據(jù)的交換。我們可以在我們之前創(chuàng)建的基本HTML文檔里來(lái)做初始化客戶端的工作,或者在一個(gè)內(nèi)部js文件里來(lái)做初始化客戶端的工作。

    JavaScript語(yǔ)法是這樣做的:

     
     
    1. SC.initialize({ 
    2.   client_id: "CLIENT_ID", 
    3.   redirect_uri: "CALLBACK_URL" 
    4. });

    (代碼見(jiàn)原文)

    讓我們分段來(lái)看它:

    • 上面代碼中的CLIENT_ID會(huì)在我們注冊(cè)app的時(shí)候提供給我們。

    • 上面代碼中的CALLBACK_URL是callback.html的URL,這個(gè)callback.html是用戶登錄后一個(gè)HTML文件的稱呼。我們很快就會(huì)創(chuàng)建它。

    在初始化完成之后,現(xiàn)在我們可以準(zhǔn)備查詢SoundCloud API了。讓我們看看在那之前我們可以做的一些例子。

    示例

    如果我們打開(kāi)瀏覽器的控制臺(tái)并輸入”SC.”,然后與SC對(duì)象有關(guān)的方法就會(huì)列出來(lái)。SC.get(uri,callback)就是其中一個(gè)方法,這個(gè)方法用來(lái)向SoundCloud API產(chǎn)生GET請(qǐng)求。

    獲得一份跟蹤列表

    為了獲得跟蹤的隨機(jī)列表,我們可以使用SC.get()方法,像下面這樣:

     
     
    1. SC.get("/tracks", function(response) { 
    2.   for (var i = 0; i < response.length; i++) { 
    3.     $("ul").append("
    4. " + response[i].title + "
    5. "); 
    6.   } 
    7. });

    (代碼見(jiàn)原文)

    上面的代碼是干什么的,它是用來(lái)查詢/tracks端點(diǎn)并且在查詢完端點(diǎn)后返回一個(gè)回調(diào)函數(shù)的。響應(yīng)數(shù)據(jù)是保存在回調(diào)響應(yīng)參數(shù)里的,它是一個(gè)有著很 多屬性的JavaScript對(duì)象數(shù)組,title屬性就是眾多屬性中的一個(gè)。我們可以在代碼里寫(xiě):console.log(response[0])來(lái) 在控制臺(tái)日志輸出響應(yīng)數(shù)據(jù)的***個(gè),而不用循環(huán)遍歷所有的對(duì)象和對(duì)象所對(duì)應(yīng)的屬性。然后,我們就會(huì)知道哪些屬性我們可以使用。

    注意:在這個(gè)代碼示例中,我們?cè)诔跏蓟臅r(shí)候并沒(méi)有指定一個(gè)回調(diào)URL。這是因?yàn)槲覀冎付ú恢付ǘ疾恢匾2还茉鯓游覀兊拇a都會(huì)執(zhí)行。但是一旦我 們實(shí)現(xiàn)了用戶登錄功能,這就是必須的而且很重要了,因?yàn)楫?dāng)你指定一個(gè)回調(diào)URL后,其他人就不可能使用我們的Client ID。

    嵌入一段跟蹤代碼

    SC對(duì)象提供了其他的方法:SC.oEmbed(url,options,callback)。該方法把SoundCloud播放器嵌入我們的網(wǎng)站,并且允許我們播放我們選擇的軌跡。

     
     
    1. SC.oEmbed('https://soundcloud.com/username/complete-url-to-the-track', {maxheight: 200, auto_play: false}, function(res) { 
    2.   $("#player").html(res.html); 
    3. }); 

     

    我們分段來(lái)看它:

    • 首先在該方法的***個(gè)參數(shù)里,我們給了一個(gè)完整的我們想要播放的跟蹤URL。

    • 該方法的第二個(gè)參數(shù)是可選參數(shù),在這個(gè)參數(shù)里,我們可以為播放器設(shè)置一些選項(xiàng)。如果想了解更多,點(diǎn)擊下面鏈接:https://developers.soundcloud.com/docs/api/reference#oembed

    • 第三個(gè)參數(shù)是一個(gè)回調(diào)函數(shù),在這個(gè)回調(diào)函數(shù)里,我們將我們頁(yè)面里的(id為player)的一個(gè)元素的內(nèi)容用該播放器(res.html)的HTML代碼替換。

    這個(gè)跟蹤路徑可以用來(lái)在一個(gè)網(wǎng)站里嵌入一首歌或者一首音樂(lè)。

    實(shí)現(xiàn)用戶登錄

    為了實(shí)現(xiàn)用戶登錄功能,我們需要有一個(gè)回調(diào)URL來(lái)達(dá)到驗(yàn)證授權(quán)的目的。這是OAuth協(xié)議的要求。如果你想了解OAuth協(xié)議,這里有一個(gè)OAuth協(xié)議的簡(jiǎn)單解釋:OAuth 2 Simplified(鏈接地址:https://aaronparecki.com/2012/07/29/2/oauth2-simplified)。因此讓我們?cè)赼pp設(shè)置里添加一個(gè)名為”callback.html”的回調(diào)URL,這個(gè)callback.html我們接下來(lái)就會(huì)創(chuàng)建。

    OAuth協(xié)議介紹鏈接地址: http://menglimengwai.iteye.com/blog/496250

    創(chuàng)建回調(diào)頁(yè)

    在一個(gè)用戶登錄后,彈出式窗口會(huì)重定向到該文件。在我們的例子中,我們把該文件定義為”callback.html”,并且該文件和我們的主頁(yè)(index.html)保存在相同的目錄里。這個(gè)文件就是在我們的app設(shè)置里我們需要在回調(diào)字段里給定的文件。

    我們需要在回調(diào)文件里使用的代碼在開(kāi)發(fā)文檔里有提供。然而,開(kāi)發(fā)文檔有點(diǎn)過(guò)時(shí),因此我們需要稍微調(diào)整一下來(lái)滿足現(xiàn)在的開(kāi)發(fā)需要標(biāo)準(zhǔn)。

    你可以根據(jù)你個(gè)人的喜好來(lái)調(diào)整它的通知和設(shè)計(jì),但是現(xiàn)在,我們使它越簡(jiǎn)單越好:

     
     
    1.  
    2.  
    3.    
    4.      
    5.     Connect with SoundCloud 
    6.    
    7.    
    8.     

      This popup should automatically close in a few seconds

       
    9.  
    10.      
    11.    
    12.  

    用戶登錄

    SC.connect(callback)就是實(shí)現(xiàn)用戶登錄功能的方法。它通過(guò)打開(kāi)一個(gè)彈窗式的窗口,提醒用戶登錄他們的SoundCloud賬戶?;镜氖褂梅椒ㄈ缦?

     
     
    1. SC.connect(function () { 
    2.   console.log("User has logged in"); 
    3. }); 

    如下是更有趣的示例:

     
     
    1. SC.connect(function () { 
    2.   SC.get("/me", function (response) { 
    3.     console.log("Welcome" + response.username); 
    4.   }); 
    5. }); 

    讓我們分段來(lái)看它:

    • 在用戶完成登錄以后,用戶登錄頁(yè)面將會(huì)被重定向到我們之前創(chuàng)建的callback.html頁(yè)面。

    • 然后隨著我們閱讀完callback.html里的代碼,彈出式窗口會(huì)自動(dòng)關(guān)閉。

    • 在那之后,我們的回調(diào)函數(shù)將獲得回調(diào),該回調(diào)是在SC.get()方法里通過(guò)一個(gè)GET請(qǐng)求到”/me”端點(diǎn)獲得的。

    • 當(dāng)GET請(qǐng)求完成時(shí),上述代碼的回調(diào)函數(shù)就會(huì)執(zhí)行,然后在控制臺(tái)會(huì)輸出一條歡迎登陸的信息。

    注意:請(qǐng)求”/me”返回的是當(dāng)前登陸用戶的數(shù)據(jù)。因此,在用戶登錄之前請(qǐng)求該URL將產(chǎn)生一個(gè)錯(cuò)誤的信息。

    處理用戶數(shù)據(jù)

    一旦用戶登錄完成,有很多事情我們可以做。為了演示一些功能,我在GitHub上創(chuàng)建了一個(gè)演示站點(diǎn)。你可以點(diǎn)擊這里查看源代碼: https://github.com/sitepoint-editors/SC_API,并且可以點(diǎn)擊這里看看它的執(zhí)行效果: http://mustagheesbutt.github.io/SC_API/。

    讓我們看看這兩個(gè)文件。在index.html里,有四個(gè)重要的div元素,它們?cè)谟脩敉瓿傻卿浐髮?huì)填滿用戶的數(shù)據(jù):

     
     
    1.  
    2.  
    3.      
    4.         

      Welcome 

       
    5.          
    6.         
     
  •     
  •  
  •  
  •      
  •      
  •         

    Your Tracks:

     
  •         
       
    •     
    •  
    •      
    •      
    •         

      Your Playlists:

       
    •         
         
      •     
      •  
      •  
      •     
      •  
      •  
      •  
      • 第二個(gè)最重要的文件是script.js:所有的奇跡都發(fā)生在這個(gè)文件里。大部分代碼我們都很熟悉,但是我們還是快速地看看:

         
         
        1. // Initialization of SDK 
        2. SC.initialize({ 
        3.   client_id: "21832d295e3463208d2ed0371ae08791", 
        4.   redirect_uri: "http://mustagheesbutt.github.io/SC_API/callback.html" 
        5. }); 

        首先初始化我們的app。注意,這次我們用redirect_uri指定了我們的callback.html頁(yè)面。這個(gè)URL或者URI必須和我們?cè)赼pp設(shè)置里指定的一致。

         
         
        1. // Login handler 
        2. var user_perma; 
        3. $("#login").click(function () { 
        4.     SC.connect(function () { 
        5.         SC.get("/me", function (me) { 
        6.             user_perma = me.permalink; 
        7.             setUI(me.username, me.avatar_url, me.description); 
        8.         }); 
        9.         if (SC.isConnected) { 
        10.             $("header, main").addClass("loggedIn"); 
        11.         } 
        12.         getTracks(); 
        13.         getPlaylists(); 
        14.     }); 
        15. }); 

        然后我們給標(biāo)簽id為login的button添加一個(gè)點(diǎn)擊事件句柄。當(dāng)該按鈕被點(diǎn)擊時(shí),將會(huì)在點(diǎn)擊事件代碼里執(zhí)行SC.connect(callback)代碼,該代碼執(zhí)行后,將會(huì)彈出一個(gè)窗口提示用戶登錄。

        當(dāng)用戶登錄完成后,彈出的窗口會(huì)關(guān)閉。然后SC.connect()里的回調(diào)函數(shù)就會(huì)執(zhí)行。在回調(diào)函數(shù)里,我們對(duì)”/me”端點(diǎn)發(fā)起一個(gè)GET請(qǐng) 求,而”/me”端點(diǎn)返回當(dāng)前登錄用戶對(duì)象。在剛才我們發(fā)起的GET請(qǐng)求回調(diào)里,我們?cè)谧兞縰ser_perma里存儲(chǔ)用戶的***鏈接,該參數(shù)是在全局范 圍定義的,所以我們之后可以使用它。

        setUI()方法,getTracks()方法和getPlaylists()方法的功能分別是,設(shè)置UI,列出用戶的跟蹤記錄和列出每個(gè)用戶的播放列表。這些功能在同一個(gè)文件里已經(jīng)被定義了。

         
         
        1. //找點(diǎn)東西播放 
        2.  
        3. function play(uri) { 
        4.  
        5.     url = "http://soundcloud.com/" + user_perma + "/" + uri; 
        6.  
        7.     SC.oEmbed(url, {maxheight: 200}, function (resp) { 
        8.  
        9.         $("#player").html(resp.html); 
        10.  
        11.     }); 
        12.  

        //當(dāng)一個(gè)播放軌跡或者一個(gè)播放列表被檢查時(shí),使用’play()’函數(shù)播放

         
         
        1. $("ul").on("click", function (e) { 
        2.  
        3.     var title = e.target.innerHTML; 
        4.  
        5.     if ( tracks.hasOwnProperty(title) ) { 
        6.  
        7.         play(tracks[title]); 
        8.  
        9.     } else if (playlists.hasOwnProperty(title)) { 
        10.  
        11.         play("sets/" + playlists[title]); 
        12.  
        13.     } 
        14.  
        15. }); 

        當(dāng)任何跟蹤路徑或者播放列表名被點(diǎn)擊,play()方法就會(huì)執(zhí)行,該方法會(huì)為點(diǎn)擊的跟蹤路徑或者播放列表名通過(guò)SC.oEmbed()方法來(lái)在我們的頁(yè)面中嵌入一個(gè)音頻播放器。

        我們能通過(guò)代碼做很多事情,例如獲取用戶類型或者更新用戶的信息,獲取用戶的頭像,接下來(lái)運(yùn)行代碼看看SoundCloud服務(wù)器返回的信息里用戶是誰(shuí)和他們的愛(ài)好是什么。

        總結(jié)

        • 如果老版本的SDK的用戶登錄功能可以使用,請(qǐng)使用老版本的SDK。因?yàn)槔习姹镜腟DK穩(wěn)定,并且返回的數(shù)據(jù)使用回調(diào)函數(shù)返回。

        • 如果老版本的用戶登錄功能不可用,可以使用SDK的新版本。新版本的SDK使用promises來(lái)返回?cái)?shù)據(jù)。

        • 通過(guò)一個(gè)簡(jiǎn)單的GET請(qǐng)求就能訪問(wèn)SoundCloud API獲取到數(shù)據(jù)。

        • 用戶特有的數(shù)據(jù)可以通過(guò)”/me”端點(diǎn)獲取,但是只有在用戶使用他們的SoundCloud賬戶登錄我們的網(wǎng)站的情況下才有效。

        從客戶端查詢一個(gè)API是一個(gè)很強(qiáng)大的工具,因?yàn)樗趶?fù)雜的后端保存了我們的信息。SDK使我們的編程生活變得簡(jiǎn)單很多。在學(xué)習(xí)了它的基礎(chǔ)用法后,我們甚至可以編寫(xiě)出更加強(qiáng)大的和用戶更加友好的web應(yīng)用。點(diǎn)擊查看一些示例(鏈接地址: http://codepen.io/search/pens?q=soundcloud&limit=all&type=type-pens),并且查看官方的SoundCloud文檔來(lái)學(xué)習(xí)更多關(guān)于這個(gè)強(qiáng)大的API的可以使用的方法。

        我希望從你那里聽(tīng)到你用SoundCloud SDK構(gòu)建的應(yīng)用的信息(或者正計(jì)劃構(gòu)建的應(yīng)用的信息)。請(qǐng)讓我看見(jiàn)你們的評(píng)論!

        作者介紹:

        Mustaghees Butt 是一名Web開(kāi)發(fā)人員和作家

        Mustaghees是一名自由的Web設(shè)計(jì)師和開(kāi)發(fā)者,他有時(shí)也寫(xiě)些文章和教程。

        他的興趣包括計(jì)算機(jī)科學(xué)(包括機(jī)器人技術(shù),AI人工智能和網(wǎng)絡(luò)技術(shù))和文學(xué)藝術(shù)。

        譯文鏈接:http://www.codeceo.com/article/javascript-sdk-soundcloud-api.html
        英文原文:Using the SoundCloud API with the JavaScript SDK


        網(wǎng)站欄目:在JavaScriptSDK里使用SoundCloudAPI
        分享網(wǎng)址:http://www.5511xx.com/article/cdjespo.html