2016-07-08 5 views
1

Ich versuche, Daten von meinem Spotify-Konto abrufen und in einem Excel Tabelle setzen. Ich möchte einen VBA-Code erstellen, um mit der Spotify Web API auf die Daten zugreifen zu können.VBA für eine POST-Anforderung an den Spotify-Konten-Service über REST API

Ich folgte die Spotify Web API Authorization Guide aber ich bin fest, wenn ich versuche, das Zugriffstoken zu beantragen. Ich muss eine POST-Anfrage an den Spotify-Konto-Dienst richten, aber anscheinend mache ich etwas falsch.

ich eine „WinHttp.WinHttpRequest.5.1“ bin mit der Post-Anforderung zu tun. Hier ist ein Teil des Codes

Set HttpRequest = CreateObject("WinHttp.WinHttpRequest.5.1") 
HttpRequest.Open "POST", "https://accounts.spotify.com/api/token" 
HttpRequest.SetRequestHeader 
HttpRequest.SetRequestHeader "Authorization", "Basic " & strClient_secret 
HttpRequest.Send ("grant_type=authorization_code&code=" & strCode & "&redirect_uri=http://www.js76.nl/diskkoffer/") 

Die Antworttext sagt, ist „Ups! Etwas ist schief gelaufen, bitte versuchen Sie es noch einmal oder überprüfen Sie unsere Hilfe-Bereich.“, Aber ich kann nicht herausfinden, was schief gelaufen ist. Ich habe keine Erfahrung mit diesen HTTP-Anfragen.

Die Saiten strClient_secret und strCode in einem anderen Teil des Programms gefüllt.

Kann jemand mir dabei helfen?

Antwort

1

Ich habe keine Spotify-Konto so, nicht sicher mit dem Benutzernamen Passwort. Aber ihr Dokument sagt, dass sie REST-Implementierung haben, so dass Ihre Anmeldeinformationen 64-Bit-codiert werden müssen.

In dieser Linie HttpRequest.SetRequestHeader "Authorization", "Basic " & strClient_secret

die variablen strClient_secret Bedürfnisse 64 Bit codiert werden.

Versuchen Sie also, eine Funktion wie diese hinzuzufügen, während Sie die Platzhalter durch den korrekten Benutzernamen und das richtige Passwort ersetzen.

Private Function EncodeBase64() As String 
    arrData = StrConv(<<YOUR_SPOTIFY_USERID>> & ":" & <<YOUR_SPOTIFY_USERPASS>>, vbFromUnicode) 

    Set objXML = New MSXML2.DOMDocument 
    Set objNode = objXML.createElement("b64") 

    objNode.DataType = "bin.base64" 
    objNode.nodeTypedValue = arrData 
    EncodeBase64 = objNode.text 

    Set objNode = Nothing 
    Set objXML = Nothing 
End Function 

dann die Zeile oben ändern: HttpRequest.SetRequestHeader "Authorization", "Basic " & EncodeBase64

einen Blick hier für REST und VBA haben: hoffentlich http://ashuvba.blogspot.com/2014/08/excel-vba-json-rest-with-jira-json-is.html

Es wird Sie auf korrekte Route festgelegt.

+0

Benötigen Sie einen Verweis auf MSXML2? – dbmitch

+0

yup, das machst du. Es sei denn, Sie möchten die späte Bindung verwenden. – cyboashu

+0

Thx Cyboashu für Ihre Antwort. Ich denke, es hat mich auf den richtigen Weg gebracht, aber ich bin noch nicht da. Ich habe es geschafft, den Benutzernamen/das Passwort zu verschlüsseln. Zuerst enthielt die Ausgabe 2 Zeilen, was mir den Fehler 5 "Ungültiger Prozeduraufruf oder Argument" gab. Wenn ich den "Zeilenvorschub" entferne, ist der Fehler verschwunden, aber ich erhalte immer noch die Spotify-Fehlerseite als Antworttext. – ronbrand