Il existe un outil de partage d'informations appelé Yammer.
Si vous souhaitez partager l'article que vous lisez dans Pocket au travail, j'ai utilisé la recette IFTTT pour le taguer sur Pocket et le publier sur Yammer.
C'était pratique, mais IFTTT a cessé de supporter Yammer, et j'ai toujours voulu le lier à Hatena Bookmark, alors j'ai profité de cette opportunité pour créer le mien.
L'API Yammer a un SDK Python, je vais donc l'utiliser. Cette fois, j'ai décidé de lancer Python avec le plan de 500 yens de Sakura Internet. Le but est d'ajouter --user
dans setup.py.
$ wget https://github.com/yammer/yam-python/archive/master.zip
$ cd yam-python-master/
$ python setup.py install --user
Après avoir confirmé le fonctionnement de la bibliothèque, enregistrez le nom de l'application et l'URL de redirection faisant référence à ce site, et obtenez le client_id et le client_secret. Cette fois, nous utiliserons Sakura Internet, alors définissez redirect_uri sur http: // xxxx.sakura.ne.jp / yammer / redirect.cgi
.
https://developer.yammer.com/docs/app-registration
Ensuite, enregistrez le webhook avec Hatena Bookmark. Reportez-vous à la procédure ci-dessous et définissez http: // xxxx.sakura.ne.jp / yammer / post.cgi
dans" URL pour recevoir les notifications d'événements ".
http://developer.hatena.ne.jp/ja/documents/bookmark/apis/webhook
Tout d'abord, créez un fichier séparé et limitez l'accès avec htaccess afin de ne pas divulguer accidentellement le client_id et le client_secret.
yammer.conf
[Yammer]
client_id = xxxx
client_secret = xxxx
redirect_uri = http://example.com/redirect.cgi
access_token = xxxx
.htaccess
AddHandler cgi-script cgi
<Files ~ ".conf">
deny from all
</Files>
Puisqu'il s'agit d'OAuth, vous écrirez un processus comme celui-ci du côté Application. (L'image est tirée de la [Bible OAuth] de Mashape (http://oauthbible.com/))
La redirection de Yammer est retournée au format redirect.cgi? Code = xxxx, donc si l'URL n'a pas code =
, le traitement de Get Request Token
et Direct User To Service Provider
dans la figure sera effectué. S'il y a code = , il est écrit pour exécuter le processus de ʻExchange Request Token for Access Token
.
redirect.cgi
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import yampy
import cgi
import ConfigParser
config = ConfigParser.RawConfigParser()
config.read('yammer.conf')
client_id = config.get('Yammer','client_id')
client_secret = config.get('Yammer','client_secret')
redirect_uri = config.get('Yammer','redirect_uri')
authenticator = yampy.Authenticator(client_id=client_id, client_secret=client_secret)
form = cgi.FieldStorage()
if form.has_key("code"):
#Code obtenu de Yammer(Request Token)Depuis l'accès_Générer un jeton
code = form["code"].value
access_token = authenticator.fetch_access_token(code)
print "Content-Type: text/html"
print ""
print access_token
else:
#Générer une URL d'authentification et rediriger vers l'écran d'authentification Yammer
auth_url = authenticator.authorization_url(redirect_uri=redirect_uri)
print "Location: "+auth_url
print ""
Si vous placez ce fichier sur le serveur et accédez à http: // xxxx.sakura.ne.jp / yammer / redirect.cgi
, vous serez redirigé vers l'écran de connexion Yammer. Si vous vous connectez à Yammer sur cet écran et appuyez sur le bouton d'approbation, access_token sera affiché.
Si vous copiez ce access_token et l'écrivez dans yammer.conf, vous pourrez publier sur yammer via post.cgi ci-dessous. (Cette partie n'était pas automatisée ...)
post.cgi
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import cgi
import yampy
import ConfigParser
config = ConfigParser.RawConfigParser()
config.read('yammer.conf')
access_token = config.get('Yammer','access_token')
form = cgi.FieldStorage()
if form.has_key("comment"):
comment = form["comment"].value
#Si le commentaire contient une chaîne Yammer, publiez-le sur Yammer
if comment.find('yammer') > -1:
url = form["url"].value
title = form["title"].value
body = title + ' ' + url
yammer = yampy.Yammer(access_token=access_token)
yammer.messages.create(body)
print "Content-Type: text/html"
print ""
print body
Désormais, si vous marquez le signet Hatena avec yammer, il sera publié sur Yammer.