[Plugin Tiers] Spotify

Tags: #<Tag:0x00007f593b989518> #<Tag:0x00007f593b98fa08>

nickel tout trouvé
merci beaucoup :wink:

Le token n’est-il pas censé être temporaire ? Il me semble avoir lu ça il y a quelques semaines (pour utiliser Spotify avec le plugin Google Cast, mais le principe est le même).

Oui il est temporaire d’une durée de 2h (à vérifier), c’est pour cela que j’ai ajouté sur la page de l’équipement la visibilité sur les tokens de l’API et de l’accès web en montrant les dates obtenues et que j’ai implémenté le refresh automatique lorsqu’il est arrivé à échéance => ça reste une version beta qui fonctionne bien chez moi depuis 5 jours et pour l’instant j’attends donc vos retours avant de passer en release, merci :wink:

Du coup je viens d’installer la beta (je n’avais pas encore le plugin d’installé sur ce Jeedom, j’ai directement mis la beta). Lors de l’appui sur le bouton “tokenize” et après connexion à Spotify, j’arrive sur mon Jeedom (avec un long code dans l’url), mais avec une page blanche.

Sur la page sur laquelle je suis redirigé après la connexion à Spotify, la top-bar ressemble à ça :

image

J’ai essayé sur plusieurs navigateur, même résultat.

Est-ce que tu utilises le dns jeedom ? Il semble que celui-ci filtre des choses … Regarde sur le fil de l’ancien forum https://www.jeedom.com/forum/viewtopic.php?f=142&t=45483, car il me sembe que quelqu’un a déja loggué ce pb => je vais y jeter un coup d’oeil plus tard …

Non, j’utilise mon propre domaine. Et j’ai installé le plugin sur une ancienne installation il y a moins d’1 mois sans avoir ce problème.

En effet quelqu’un à la fin de cette page semble avoir le même problème. J’ai bien vérifié que j’étais déconnecté de tout player/compte dev/etc. de Spotify, mais le problème est toujours là. J’ai aussi vérifié que l’url renseigné en callback était bonne

Bonjour, j’ai un souci quand je clique sur “tokenize” avec une erreur JavaScript dans la console Chrome (j’ai caché le code) :

Uncaught TypeError: window.opener.spotify_callback is not a function
    at index.php?v=d&m=spotify&p=spotify&code=[code_caché]:175

image

J’ai vu ton screen juste avant, il semblerait que ce soit le même problème dont je parle au-dessus. Pas trouvé de solution pour l’instant, et sur l’ancien forum non plus à première vue.

Ah oui j’avais pas vu :wink:

Le message n’est pas l’origine mais la conséquence du pb, car à priori la page n’est pas bien chargée et tu n’as aucun javascript chargé, donc la fonction n’existe pas …

La vraie question est pourquoi les javascript et l’interface jeedom ne se chargent pas bien ? Peux-tu essayer de by-passer la redirection de domaine en mettant directement ton IP externe dans l’url de callback associée au clientid/secret de spotify ? Ou même directement l’IP interne car la redirection reste locale au navigateur ?

Même soucis avec l’IP locale

J’ai essayé en passant par l’adresse locale (192.168…) et en changeant l’url callback en conséquence dans spotify mais même souci.

Re, lorsque tu cliques sur Tokenize, dans la console javascript du navigateur il devrait y avoir qq chose du genre “### CALLBACK = xxxx” puis la fenêtre de login/pwd de spotify qui s’ouvre afin de confirmer la délégation de l’autorisation …

Ensuite quand tu valide le login/pwd de cette même fenêtre, elle devrait se fermer et il devrait y avoir une autre trace dans la console javascript du genre “### CODE = …” … et les champs qui se remplissent.

Il n’y a pas de rechargement de page, tout se passe normalement dans la popup et l’écran sur lequel tu cliques sur tokenize. Tu n’as pas de popup blocker ? Peux-tu me détailler le comportement et les logs de la console javascript ?

Je me permet de te répondre comme j’ai la possibilité de faire la manipulation :

déjà 1ère remarque, tout se passe dans le même onglet et non dans une pop-up. J’ai bien évidemment désactiver tout bloqueur de contenu/pop-up et j’ai essayé sur 2 navigateurs (Safari et Chrome).

Donc après clic sur tokenize, j’ai (dans le même onglet) :

### CALLBACK = l'url que j'ai mise dans le dev Spotify

Et voici les erreurs :

XMLHttpRequest cannot load https://sub.domain.tld/core/ajax/event.ajax.php due to access control checks.

image

Après m’être authentifié sur Spotify, j’ai ceci :

image

Et je suis donc redirigé sur le Jeedom avec les {{ }}

Tu n’as donc pas l’ouverture du login/pwd de spotify dans une popup, mais dans la même fenêtre ?

Oui c’est ça, je bascule de Jeedom à l’UI de Spotify dans le même onglet.

Ce n’est pas normal, c’est donc l’ouverture de la popup qui pose problème, à la ligne 132 de spotify.js

J’utilise Chrome Version 77.0.3865.90 (Official Build) (64-bit) et j’ai la trace suivante dans la console:

### CALLBACK = https://xxx.xxx.xxx/index.php?v=d&m=spotify&p=spotify

puis

https://accounts.spotify.com/authorize?client_id=xxx&redirect_uri=https%3A%2F%2Fxxx.xxx.xx%2Findex.php%3Fv%3Dd%26m%3Dspotify%26p%3Dspotify&response_type=code&scope=user-library-modify+user-library-read+app-remote-control+streaming+playlist-read-private+playlist-read-collaborative+playlist-modify-public+playlist-modify-private+user-follow-modify+user-follow-read+user-read-recently-played+user-top-read+user-read-email+user-read-private+user-read-currently-playing+user-read-playback-state+user-modify-playback-state

et la fenêtre qui s’ouvre sur l’url ci-dessus.

Si tu tappes directement le code suivant dans la console javascript de chrome:

window.open(‘http://www.google.com’, ‘Test’, ‘menubar=no,location=no,resizable=no,scrollbars=no,status=no,width=200,height=200’ );

Est-ce que tu a une popup ?

Oui ce code m’ouvre une pop-up.

Sinon j’ai les mêmes traces que toi, mais ça s’ouvre en remplacement de Jeedom

Est-ce que tu pourrais remplacer dans le fichier spotify.js la ligne windows.open par le code suivant :

spotify_window = window.open( data.result, '_blank', 'menubar=no,location=no,resizable=no,scrollbars=no,status=no, width=' + width + ', height=' + height + ', top=' + top + ', left=' + left );

J’ai remplacé le 2ème paramètre par ‘_blank’, ce qui semble être plus compatible ?

Quel navigateur et version utilises-tu ?

1 J'aime

On parle bien de spotify.js dans /var/www/html/plugins/spotify/ressources ? (je suis dans la beta du plugin, je ne sais pas si c’est stocké ailleurs). Je ne trouve même pas de “window.open” dedans

image