2016-09-25 3 views
0

J'ai un chatbot en cours d'exécution sur un site et j'aimerais pouvoir y intégrer flattr. Il est construit dans Node et n'a pas de frontal, il utilise simplement une API pour interagir avec le site.Intégration de Flattr dans un chatbot

Je voudrais pouvoir faire quelque chose comme ça

Note: « » toutes les commandes pour le bot commencent par
!flattr @username à Flattr un utilisateur

Je comprends que cela voudrait dire des gens qui veulent recevoir ou donner Flattr devrait créer des comptes

seulement à la recherche des indications sur la façon de démarrer cela.

Voici ce que je pense que je dois:

Créer une application, obtenez ID client et secret, passez par le flux OAuth et obtenir jeton Bearer. Incluant la portée de flattr thing dans ce processus

Combien de temps vos clés expirent-elles? Devrais-je mettre à jour ce jeton souvent?

Ensuite, je suppose que je devrais juste besoin d'utiliser the flattr thing api endpoint? Un utilisateur est-il considéré comme une «chose» dans votre API? Est-ce que le :id est un secret thing ou peut-il être public sans danger?

Un utilisateur connaît-il son identifiant ou peut-il le trouver facilement? Ou aurais-je besoin d'utiliser le Users endpoint pour obtenir cette information? Et cela signifie-t-il ajouter une portée supplémentaire?

Ceci est ma situation idéale. Dans le chat tous les réglages des utilisateurs d'un compte Flattr et peut connecter le bot à Flattr en faisant:
!flattr addme [flattr username] (bien ils pourraient utiliser ID Flattr si accessible)
alors comme je l'ai mentionné ci-dessus, ils peuvent tout simplement utiliser !flattr @[username] et c'est tout

merci!

Répondre

1

Vous avez besoin d'informations d'identification d'API, mais la portée "flattr" devrait suffire. Vous devez résoudre trois problèmes: identifier les utilisateurs, authentifier les utilisateurs, puis flattring URL: s (car le système Flattr ne fonctionne qu'avec les URL: s). Le plus tard est facile, la meilleure chose serait si votre application/site a fourni une page de profil pour chaque utilisateur. Quelque chose comme 'http://example.com/user/francisc0'. Vous appelez simplement le point de terminaison/flattr avec cette URL. La réponse de l'URL doit soit contenir quelque chose que Flattr pourrait utiliser pour identifier l'utilisateur Flattr ou vous devrez passer l'ID de l'utilisateur avec la demande flattr. Lisez sur l'URL de soumission automatique: s. Mais en bref, une URL de soumission automatique ressemble https://flattr.com/submit/auto?fid=abc123&url=http%3A%2F%2Fexample.com%2Fuser%2Ffrancisc0

Afin d'identifier vos utilisateurs ont besoin d'avoir des noms d'utilisateurs uniques sur le chat (ou autre chose qui est unique que vous êtes capable de rechercher à partir d'un nom d'utilisateur) . Chaque utilisateur doit également indiquer à votre application quel est son identifiant flattr. Cela peut être aussi simple qu'un champ de saisie où l'utilisateur ajoute manuellement son identifiant ou vous pouvez le récupérer à partir de l'API (voir le point de terminaison/user).

Maintenant, afin de flattr une URL votre application (client api) doit être authentifié en tant qu'utilisateur Flattr. Comme l'utilisateur Flattr qui a tapé la commande "! Flattr @username". Donc, ma suggestion est que lorsqu'un utilisateur veut activer la capacité de flattr sur le chat, vous effectuez une authentification oauth pour eux et enregistrez le jeton d'accès (ils n'expirent jamais btw). Lorsque l'utilisateur tape "! Flattr @username" dans le chat, vous récupérez le jeton d'accès de cet utilisateur à partir du stockage, puis envoyez la requête flattr en tant qu'utilisateur.

Cela devrait l'être.

J'ai fait quelque chose de similaire pour IRC il y a quelques années et ça a très bien fonctionné, donc ça devrait marcher aussi pour votre cas d'utilisation. Astuces pro: Évitez d'utiliser les points de terminaison/thing, car ils seront très bientôt obsolètes. La documentation de l'API n'est pas vraiment à jour, mais c'est aussi quelque chose qui change très bientôt. Les objets utilisateur incluront bientôt un attribut 'idv3', utilisez-le comme identifiant utilisateur au lieu de 'id'.

Source: Dév.