FAQ

SDK du Répertoire des applis

Foire Aux Questions

Flux SSO

Conservation des paramètres utilisateur

Prise en charge de plusieurs comptes

Erreurs hsp.js

Flux SSO

Comme condition, nous demandons aux développeurs d'utiliser l'authentification SSO du côté Hootsuite de leur appli, par contre, nous leur demandons d'utiliser OAuth pour le prestataire de service externe.

Voici le flux de travail que l'appli doit suivre lorsque le côté Hootsuite utilise le mode SSO :

  • Vous pouvez configurer l'utilisation du mode SSO par l'appli dans l'outil administrateur du développeur et ensuite émettre un secret partagé
  • Hootsuite transmettra alors l'ID utilisateur Hootsuite de l'utilisateur avec une vérification de jeton pour chaque interaction avec Hootsuite
  • Cela permettra de conserver un historique de l'utilisateur Hootsuite
  • L'appli prendra ensuite cet identifiant et le fera passer dans une couche qui fera correspondre l'ID Hootsuite à l'identifiant utilisateur de l'appli
  • S'il n'y a pas d'historique, l'appli doit demander une authentification (OAuth au sein de votre appli)

Conservation des paramètres utilisateur

Après l'authentification du flux auprès de Hootsuite, les paramètres suivants sont renvoyés vers l'iframe du flux :

  1. lang=en
  2. timezone=7200
  3. pid=2823         // ID de placement, unique pour chaque flux par utilisateur
  4. uid=1234567      // ID utilisateur Hootsuite
  5. i=1234567        // identifieur d'utilisateur (peut parfois être saisi par l'utilisateur lors de l'installation de l'appli)
  6. ts=1318362023    // horodatage
  7. token=123abc...  // jeton de sécurité (hachage SHA-1)

À cet endroit, les développeurs d'appli divergent sur la façon dont ils stockent ces détails pour un utilisateur. La méthode privilégiée est celle d'un tableau d'utilisateur, toutefois, il est aussi possible de laisser un cookie dans le navigateur de l'utilisateur. Vous pouvez ensuite assigner un nom unique à chaque session, quelque chose comme appname_512773 (où 512773 est l'ID de l'appli ou le pid).

Lorsque vous utilisez le mode SSO pour vous connecter à Hootsuite, l'accès initial à l'appli apparaît comme suit :

/index.php?lang=en&timezone=-25200&pid=512773&uid=209524&isSsl=0&i=209524&ts=1350591402&token=6d20004764b07cefed6fd8892026d22ce

Puis, pour chaque requête suivante, vous pouvez ajouter ce qui suit à la partie requête de l'URL :

/index.php?lang=en&timezone=-25200&pid=515068&uid=209524

Prise en charge de plusieurs comptes

Si vous souhaitez prendre en charge plusieurs comptes pour des flux (donner la possibilité à un utilisateur d'authentifier chaque flux avec un compte unique), vous pouvez lier un jeton d'accès à l'ID du flux/de l'appli. Chaque nouveau flux ajoute des résultats dans un appel à des fins d'authentification auprès de votre service : même si l'utilisateur a déjà ajouté l'appli et a procédé à l'authentification via un flux différent, l'appli demandera à l'utilisateur de s'authentifier à nouveau.

Erreurs hsp.js

La fonction hsp.init ne doit pas être présente sur toutes les pages mais uniquement sur la page initiale de l'appli et elle ne doit être appelée qu'une seule fois. Une fois que l'initialisation a été faite, vous devez transmettre le PID et l'UID successivement sur chaque page que l'utilisateur va visiter avec l'appli. L'UID et le PID doivent être transmis par l'URL du receiverPath : /index.php?theme=magnum&lang=en&timezone=-25200&pid=515068&uid=209524

Après avoir chargé mon flux d'application, ce message d'erreur js s'affiche : « Unsafe JavaScript attempt to access frame with URL https://abc.abc.abc from frame with URL https://xyz.xyz.xyz Domains, protocols and ports must match » (Tentative JavaScript infructueuse d'accès à la trame avec l'URL https://abc.abc.abc à partir de la trame avec l'URL https://xyz.xyz.xyz - Les domaines, protocoles et ports doivent correspondre).

  1. Assurez-vous qu'il n'y a pas d'erreur sur la page de votre flux d'application ou de votre plug-in
  2. Assurez-vous que votre flux d'application ou votre plug-in utilise le bon hsp.js : https://d2l6uygi1pgnys.cloudfront.net/jsapi/2-0/hsp.js
  3. Assurez-vous que l'apiKey du hsp.init() est correct
  4. Si le tableau de bord d'Hootsuite est en mode SSL, assurez-vous d'avoir fourni la bonne URL iframe sécurisée sur la page des réglages de votre flux d'application. Assurez-vous que l'URL de l'application de destination est aussi en SSL. Il est important que le hsp.js soit chargé en https.

Le message d'erreur suivant s'affiche sur le tableau de bord : « API Key: xxxxxxxxxxxxxxxxxxx is not correct, please check your app settings » (Clé API xxxxxxxxxxxxxxxxxxx incorrecte, vérifiez les paramètres de votre appli).

Assurez-vous que l'apiKey du hsp.init() est correct.

Le message d'erreur suivant s'affiche sur le tableau de bord : « API Key: is not correct, please check your app settings » (Clé API incorrecte, vérifiez les paramètres de votre appli).

Assurez-vous que l'apiKey du hsp.init() n'est pas vide. Si vous utilisez un hsp.js dans vos pop-up ou autres pages iframe, assurez-vous que le hsp.init() n'est pas sollicité de nouveau. La seule fonction hsp qu'il est légitime d'utiliser en dehors de la page de flux d'application ou de plug-in est la fonction hsp.cloaseCustomPopup(apiKey, pid) et elle ne requiert pas d'init.

Après avoir chargé mon flux d'application, ce message d'erreur js s'affiche : « Uncaught TypeError: Cannot call method 'appendChild' of null ».

Vérifiez votre fonction hsp.init. Assurez-vous qu'elle n'est appelée qu'après que la page est complètement chargée. Ajoutez par exemple la fonction $(document).ready().

Comment utiliser une fonction hsp sur ma page pop-up personnalisée ?

Si votre pop-up et votre flux d'application ou votre plug-in sont sur le même domaine, veillez à ce que votre pop-up utilise la fonction javascript suivante pour communiquer avec votre page de flux ou de plug-in et exécute la fonction hsp depuis cet emplacement : window.parent.frames[apiKey_pid].hsp.some_function().