2012-04-04 7 views
0

Ich versuche, die Soundcloud-API zu verwenden, um eine integrierte "Export" -Funktion in einer Open-Source-DAW-Anwendung (Ardour) zu implementieren.Flow "User Credentials" verwenden, um ein Authentifizierungstoken über libcurl zu erhalten

Zumindest für den ersten Entwurf scheint es, dass die einfachste Methode, ein authentifiziertes Token zu erhalten, die Verwendung des "User Credentials" -Flusses ist. Also benutze ich meinen eigenen Account als Beispiel. Ich verwende Libcurl programmatisch diese Anforderung zu erzeugen:

https://api.soundcloud.com/oauth2/token?client_id=e7ac891eef866f139773cf8102b7a719&client_secret=CLIENT_SECRET&grant_type=password&[email protected]&password=MY_PASSWORD

Das Ergebnis ist: "404 - nicht gefunden"

Ein paar Fragen:

1) Irgendwelche Ideen, was „404 - Nicht gefunden "bedeutet in diesem Zusammenhang? Ist mein Benutzername im falschen Format? Habe ich einen Tippfehler gemacht? Oder ist der Workflow für Benutzeranmeldeinformationen nicht mehr verfügbar?

2) Dies ist eine Open-Source-App, so dass die client_id und client_secret tatsächlich für die Welt verfügbar sind. Was sind die Konsequenzen (wenn überhaupt) davon?

Bitte beachten Sie, dass ich kein Experte für curl/web integration bin (obwohl ich libcurl verwenden konnte, um Sounds von Freesound.org zu importieren) - also vermisse ich vielleicht etwas sehr Offensichtliches.

Antwort

0

Es sieht so aus, als würden Sie eine GET-Anfrage an diese URL senden. Der OAuth2-Token-Endpunkt unterstützt nur POST-Anforderungen. Darüber hinaus müssen Parameter im Anforderungstext und nicht als Teil der Abfragezeichenfolge gesendet werden. Mit Hilfe der curl Befehlszeilenprogramm, würde dies wie folgt aussehen:

curl -X POST -D - https://api.soundcloud.com/oauth2/token -F'client_id=YOUR_CLIENT_ID' \ 
    -F'client_secret=YOUR_CLIENT_SECRET' -F'grant_type=password' \ 
    -F'username=YOUR_USERNAME' -F'password=YOUR_PASSWORD' 

Technisch sollten wir eine 405 zurück anstelle eines 404. entsenden werde ich einen Fehler für diese Datei, vielen Dank für den Hinweis it out.

Sie möchten auf keinen Fall Ihre Client-Anmeldeinformationen verteilen. Ihre Client-ID und Ihr Client-Geheimnis identifizieren Ihre Anwendung eindeutig in SoundCloud. Wenn Sie diese verteilen, könnte jeder andere Anwendungsentwickler diese Werte verwenden, um eine Anwendung zu erstellen, die wie Ihre aussieht. Wenn eine dieser Anwendungen gegen die Nutzungsbedingungen von SoundClouds verstoßen würde, müssten wir den Zugriff auf die Client-ID sperren und somit Ihre Anwendung deaktivieren.

Während der Flow für Benutzeranmeldeinformationen unterstützt wird, wird dies nur empfohlen, wenn der häufigere Autorisierungscodefluss nicht möglich ist. Der Autorisierungscode Flow ist für die meisten Benutzer vertrauter. Es ermöglicht Ihnen, dass der Benutzer den Zugriff auf Ihre Anwendung autorisiert, ohne dass er Ihrer App ihre Anmeldeinformationen geben muss. Der Hauptgrund dafür, dass der Benutzeranmeldefluss nicht empfohlen wird, besteht darin, dass Benutzer, die sich über Facebook Connect registrieren, kein Passwort haben und daher Ihre App nicht mit ihrem SoundCloud-Konto verbinden können.

Für Desktop-/Mobilanwendungen können Sie während des App-Registrierungsprozesses einen Weiterleitungs-URI angeben, der ein benutzerdefiniertes Protokollschema verwendet (z. B. myapp: //), das die Steuerung an Ihre Anwendung zurückgibt. Die genaue Methode, um dies zu tun, ändert sich von Plattform zu Plattform. Dies bedeutet, dass Sie keinen laufenden Webdienst benötigen, um den Authentifizierungsablauf zu vermitteln.

Lassen Sie mich wissen, wenn Sie irgendwelche Follow-up-Fragen haben und ich werde meine Antwort bearbeiten. Ich hoffe, das hilft!

+0

Danke Paul! Ich werde untersuchen, was in libcurl benötigt wird, um dies zu ermöglichen. In Bezug auf die "geheime" ID ... ist es ein Open-Source-Programm, so dass es keine andere Wahl gibt, als es zu veröffentlichen.Sicherlich ist es für eine App unmöglich, die Soundcloud TOS zu brechen, da der authentifizierte Benutzer der Schuldige ist? Abgesehen davon, dass der Sound der App "zugeschrieben" wird, warum ist das wichtig? Schließlich zur Autorisierung: Ich bin offen für die Verwendung des "Authorization Code Flow", aber ich verstehe es nicht im Kontext einer Desktop-App. Es scheint, dass ein 3rd-Party-Server als Vermittler in irgendeiner Form benötigt wird. Hoffentlich bin ich nur verwirrt. – user1313170

+0

Wenn Sie es als Open Source versenden, sollten Sie die Client-Anmeldeinformationen vergessen und die App-Registrierung zu einem Teil des Installations-/Setup-Prozesses machen. Das Problem ist, dass Sie Anmeldeinformationen vergeben. Wenn zum Beispiel ein Entwickler mit böswilliger Absicht eine App erstellen wollte, die etwas schädlich machen würde, könnten sie Ihre App-Anmeldedaten verwenden und als App "posen". Der Benutzer würde denken, dass er Ihre Anwendung authentifiziert hat. Unter dem Strich teilt das Teilen von Anmeldeinformationen eine Vertrauensstellung. Apps mit durchgesickerten Kundengeheimnissen würden mit ziemlicher Sicherheit deaktiviert werden. –

+0

Meine Antwort wurde dahingehend geändert, dass Details zur Verwendung des Auth Code Flow mit der Desktop-App enthalten sind. Auch erwähnt, warum User Cred Flow nicht empfohlen wird. Auch, wenn Sie meine Antwort hilfreich fanden, ist es eine gute Übung, sie zu "akzeptieren" :-) Hoffe, dass hilft. Lassen Sie mich wissen, wenn Sie weitere Fragen haben. –

Verwandte Themen