Jump to content
  • 0
jilc

Spotify API

Question

Bonjour j'ai une question sur l'API de SPOTIFY !

Pour effectuer des recherches, SPOTIFY demande une authentification ->  l'obtention d'un token.

Il y a 3 required : client_id, response_type et redirect_uri

Ma question est : que spécifier comme redirect_uri ? Si mon application n'est pas hébergée sur FMServer ou sur un FMserver sans IPFixe, comment, ou rediriger la réponse ??

J'aimerais obtenir la réponse directement dans filemaker, dans une variable !! Récupérer ce token pour effectuer ma recherche !

https://developer.spotify.com/web-api/authorization-guide/

Merci de votre aide

A+

JL

Share this post


Link to post
Share on other sites

16 answers to this question

Recommended Posts

  • 0

Bonjour,

Pour ramener la réponse au plus proche de ta machine, il est mentionné dans https://developer.spotify.com/web-api/tutorial/ que l'on peu ajouter http://localhost:8888/callback dans la whitelist.

Sinon utiliser des wrappers (à base d'autres langages de prog.) qui s'intègrent à la "Web Api". Ils nécessiteront donc l'utilisation de plug-ins, ce qui n'est apparemment pas le but recherché, mais à mon avis le seul moyen de nourrir une variable. (J'espère cependant me tromper !)

 

Share this post


Link to post
Share on other sites
  • 0

Bonjour Clem, merci pour cette réponse.

Tu penses que l'on pourrait y parvenir avec le plugin de BasElement ?

Share this post


Link to post
Share on other sites
  • 0

non, mon but est toujours d'obtenir la réponse directement dans FM, avec ou sans plugin !

Share this post


Link to post
Share on other sites
  • 0

Aucune autre suggestion ! 

Share this post


Link to post
Share on other sites
  • 0

Hello,

… en fait, tu peux tout gérer à partir des options "cURL" de la fonction "Insert from URL"
N'étant qu'en v.12, je suis parvenu à mes fins en passant par cURL du terminal. Traduites en FMP cela devrait à peu près ressembler à cela:

 

Définir variable[$_clientID; Valeur : "<-ton ID Client ->"]Définir variable[$_clientSecret; Valeur : "<-ta Clé Client ->"]Définir variable[$_hash; Valeur : Base64Encode($_clientID & ":" & $_clientSecret)]## POSTDéfinir variable[$_oAuthURL; Valeur : "https://accounts.spotify.com/api/token"]Insérer depuis URL [$_response; $_oAuthURL ; Citation( "-H " & Citation("Content-Type:application/x-www-form-urlencoded") & " -H " & Citation ("Authorization: Basic " & $_hash ) & " -d " & Citation("grant_type=client_credentials"))]Définir variable[$_myToken; Valeur : JSONGetElement( $_response ; "access_token")]#  en cas de succès, les 3 clés sont: access_token, token_type (tjrs = "Bearer") et expires_in (tjrs = 3600)#  en cas d'erreur : "error.status" et "error.message"# -X GETDéfinir variable[$_requestBaseURL; Valeur : "https://api.spotify.com"]  # Ex:  Pour une recherche d'album, artiste, playlist ou track…Définir variable[$_endPoint; Valeur : "/v1/search"] // cf endPoints --> https://developer.spotify.com/web-api/endpoint-reference/Définir variable[$_find; Valeur : "claude françois"] // pas très branché mais y'a un 'ç' et un espace ;-)Définir variable[$_query; Valeur : "?q= & ObtenirURLCodee ( $_find ) & "&type=artist&market=FR&offset=0&limit=50] // Requis: type=album, artist, playlist ou track; Optionel: market, offset et limit (https://developer.spotify.com/web-api/search-item/)#  Ne sachant pas si dans 'Insérer depuis URL' l'URL est obligatoire ou si on peut passer toute la requête dans les options cURL … à tester donc …Insérer depuis URL [$_result ; $_requestBaseURL & $_endPoint & $_query ; Citation( "-H " & Citation("Accept: application/json") & " -H " & Citation ("Authorization: Bearer " & $_myToken ))]# ma commande dans le terminal était celle-ci :# curl -X GET "https://api.spotify.com/v1/search?q=$myRequest&type=artist&market=FR&offset=0&limit=50"  -H "Accept: application/json" -H "Authoriztion: Bearer $myAccessToken"

 

{  "artists" : {    "href" : "https://api.spotify.com/v1/search?query=claude+fran%C3%A7ois&type=artist&market=FR&offset=0&limit=50",    "items" : [ {      "external_urls" : {        "spotify" : "https://open.spotify.com/artist/0P2p1bqVyP2EgqubwjTBUJ"      },      "followers" : {        "href" : null,        "total" : 34777      },      "genres" : [ "cabaret", "chanson", "francoton", "french pop", "ye ye" ],      "href" : "https://api.spotify.com/v1/artists/0P2p1bqVyP2EgqubwjTBUJ",      "id" : "0P2p1bqVyP2EgqubwjTBUJ",      "images" : [ {        "height" : 640,        "url" : "https://i.scdn.co/image/e169dad8e0acd988d5b488b1b1111bf305a39996",        "width" : 640      }, {        "height" : 320,        "url" : "https://i.scdn.co/image/b996609015e250455e59aa633f51c7f62e4f36b7",        "width" : 320      }, {        "height" : 160,        "url" : "https://i.scdn.co/image/38eacf99e44e5ebb0fc6390186d41563b90cb77f",        "width" : 160      } ],      "name" : "Claude François",      "popularity" : 54,      "type" : "artist",      "uri" : "spotify:artist:0P2p1bqVyP2EgqubwjTBUJ"    }, {      "external_urls" : {        "spotify" : "https://open.spotify.com/artist/1QfdXMI02bPETqw2BKUpuL"      },      "followers" : {        "href" : null,        "total" : 65      },      "genres" : [ ],      "href" : "https://api.spotify.com/v1/artists/1QfdXMI02bPETqw2BKUpuL",      "id" : "1QfdXMI02bPETqw2BKUpuL",      "images" : [ ],      "name" : "Claude François Avec Martine Clémenceau",      "popularity" : 5,      "type" : "artist",      "uri" : "spotify:artist:1QfdXMI02bPETqw2BKUpuL"    } ],    "limit" : 50,    "next" : null,    "offset" : 0,    "previous" : null,    "total" : 2  }}

 

L'URI de redirection de ton application, n'est pas du tout sollicitée dans ce cas. Tu la remplie donc pour la forme …

Share this post


Link to post
Share on other sites
  • 0

Merci infiniment Clem, 

La réponse est "invalid_client".

Si je remplace 

application/x-www-form-urlencoded par application/json

j'ai : "error description" unexpected status 415

Pas vraiment parlant non plus !!

 

Share this post


Link to post
Share on other sites
  • 0

Copie les 4 lignes dans un éditeur de texte, entre tes valeurs dans les deux premières

client_id="<- enter code ->"client_secret="<- enter code ->"response=$(echo -n $client_id:$client_secret | openssl base64 | tr -d '\n')echo $response

puis  copie/colle le tout dans un Terminal (si tu es sous OSX) -> Hit Enter

Obtiens-tu la même valeur qu'avec Base64Encode($_clientID & ":" & $_clientSecret)

------------------------------------------------------------------------------
Le content type que tu POST est bien de type application/x-www-form-urlencoded

Share this post


Link to post
Share on other sites
  • 0

non, dans le terminal il est plus long

Il contient l'intégralité du Base64encode plus environ 12 caractères

 

Share this post


Link to post
Share on other sites
  • 0

Non, il est identique, il y a juste un retour à la ligne,  -> je ne voyait pas la fin

Share this post


Link to post
Share on other sites
  • 0

Si tu est sûr que tes variables portent le même nom entre leurs déclarations et le calcul Base64Encode, alors essaye la fct Base64EncodeRFC( RFCnumber ; data ).

Tu dois obtenir la même valeur que ds le terminal.

 

PS: Comment ça li y a un retour à la ligne ???

| tr -d '\n'

et là pour les supprimer !

Share this post


Link to post
Share on other sites
  • 0

Le retour à la ligne est dans FM pas dans terminal

Et bingo avec " Base64EncodeRFC ( 3548 ;  $_clientID & ":" & $_clientSecret )"

Ca fonctionne .

Impossible de trouver tout ceci sans toi 

Un immense grand merci  from Schweiz !

Je t'envoie une fondue ??

Share this post


Link to post
Share on other sites
  • 0

Pour le RFC j'aurais dis 4648, mais ravi d'entendre que tout fonctionne.  Y compris la partie GET ? Parce que j'étais à tatillon sur l'option -X du HEADER

Pour la fondue, c'est 5  au minimum ;-)…suis dingue de ça…

Share this post


Link to post
Share on other sites
  • 0

Yep, j'ai crier victoire au token...

La partie get ne fonctionne pas "l'authentification a échoué" , pourtant dans la doc. tout est dans curl

curl -X GET "https://api.spotify.com/v1/search?q=tania%20bowra&type=artist" -H "Authorization: Bearer {your access token}"

Share this post


Link to post
Share on other sites
  • 0

Finalement ok !!

Capture d’écran 2017-10-30 à 22.25.12.png

59f798dc3664d_Capturedcran2017-10-3022_25_12.thumb.png.326f590fda4282dbbaa885032bbdaa1d.png

59f798dc3664d_Capturedcran2017-10-3022_25_12.thumb.png.326f590fda4282dbbaa885032bbdaa1d.png

59f798dc3664d_Capturedcran2017-10-3022_25_12.thumb.png.326f590fda4282dbbaa885032bbdaa1d.png

59f798dc3664d_Capturedcran2017-10-3022_25_12.thumb.png.326f590fda4282dbbaa885032bbdaa1d.png

59f798dc3664d_Capturedcran2017-10-3022_25_12.thumb.png.326f590fda4282dbbaa885032bbdaa1d.png

59f798dc3664d_Capturedcran2017-10-3022_25_12.thumb.png.326f590fda4282dbbaa885032bbdaa1d.png

59f798dc3664d_Capturedcran2017-10-3022_25_12.thumb.png.326f590fda4282dbbaa885032bbdaa1d.png

59f798dc3664d_Capturedcran2017-10-3022_25_12.thumb.png.326f590fda4282dbbaa885032bbdaa1d.png

59f798dc3664d_Capturedcran2017-10-3022_25_12.thumb.png.326f590fda4282dbbaa885032bbdaa1d.png

59f798dc3664d_Capturedcran2017-10-3022_25_12.thumb.png.326f590fda4282dbbaa885032bbdaa1d.png

59f798dc3664d_Capturedcran2017-10-3022_25_12.thumb.png.326f590fda4282dbbaa885032bbdaa1d.png

59f798dc3664d_Capturedcran2017-10-3022_25_12.thumb.png.326f590fda4282dbbaa885032bbdaa1d.png

Share this post


Link to post
Share on other sites
  • 0

Nice!

….rien de grave au final, juste une petite Citation( ) en trop… et en avant les playlist d'alpenhorn post-grunge et autres concerts de cloches indie metal. Switzerland rocks !

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...