API Twitter: mise à jour de l'état simple (Python)
-
11-10-2019 - |
Question
Je cherchais un moyen de mettre à jour mon statut Twitter à partir d'un client Python. Comme ce client n'a besoin que d'un accès compte Twitter, il devrait être possible de le faire avec un oauth_token de prégénérée et secret, selon http://dev.twitter.com/pages/oauth_single_token
Cependant l'exemple de code ne semble pas au travail, je suis en train de « ne pouvait pas vous authentifier » ou « signature incorrecte » ..
Comme il y a un tas de différentes bibliothèque twitter python là-bas (et pas tous sont à jour) J'apprécierions vraiment si quelqu'un pourrait me diriger une bibliothèque qui travaille actuellement pour les demandes POST, ou post un exemple de code!
Mise à jour: J'ai essayé la solution de Pavel, et il fonctionne aussi longtemps que le nouveau message est un seul mot long, mais dès qu'il contient des espaces, je reçois cette erreur:
status = api.PostUpdate('hello world')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python26\lib\site-packages\python_twitter\twitter.py", line 2459, in PostUpdate
self._CheckForTwitterError(data)
File "C:\Python26\lib\site-packages\python_twitter\twitter.py", line 3394, in _CheckForTwitterErro
r
raise TwitterError(data['error'])
python_twitter.twitter.TwitterError: Incorrect signature
Si toutefois la mise à jour est juste un mot, cela fonctionne:
status = api.PostUpdate('helloworld')
{'status': 'helloworld'}
Toute idée pourquoi cela pourrait se produire?
Merci beaucoup à l'avance,
Hoff
La solution 2
J'ai été en mesure de résoudre ce problème en utilisant une autre bibliothèque - donc je vais ici pour référence posterai ma solution:
import tweepy
# http://dev.twitter.com/apps/myappid
CONSUMER_KEY = 'my consumer key'
CONSUMER_SECRET = 'my consumer secret'
# http://dev.twitter.com/apps/myappid/my_token
ACCESS_TOKEN_KEY= 'my access token key'
ACCESS_TOKEN_SECRET= 'my access token secret'
def tweet(status):
'''
updates the status of my twitter account
requires tweepy (https://github.com/joshthecoder/tweepy)
'''
if len(status) > 140:
raise Exception('status message is too long!')
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)
result = api.update_status(status)
return result
Autres conseils
Vous pourriez être intéressé par cet http://code.google.com/p/python Twitter- /
Malheureusement, les documents ne sont pas là pour être juste et dernier « libération » était en 2009.
J'ai utilisé le code de la hg:
wget http://python-twitter.googlecode.com/hg/get_access_token.py
wget http://python-twitter.googlecode.com/hg/twitter.py
Après (long) processus d'enregistrement de l'application ( http://dev.twitter.com/pages/ auth # registre ), vous devez avoir la clé et le code secret. Ils sont uniques pour une application.
Ensuite, vous devez connecter l'application à votre compte, modifier le get_access_token.py selon les instructions dans la source (sic!) Et course. Vous devriez maintenant avoir la clé Twitter jeton d'accès et secret.
>>> import twitter
>>> api = twitter.Api(consumer_key='consumer_key',
consumer_secret='consumer_secret', access_token_key='access_token',
access_token_secret='access_token_secret')
>>> status = api.PostUpdate('I love python-twitter!')
>>> print status.text
I love python-twitter!
Et ça marche pour moi http://twitter.com/#!/pawelprazak/status / 16504039403425792 (pas sûr si elle est visible à tout le monde)
Cela dit, je dois ajouter que je ne suis pas comme le code, donc si je vais l'utiliser je le réécrire.
EDIT:. Je l'ai fait l'exemple plus clair
Le plus récent emplacement de la documentation Python-Twitter est maintenant sur GitHub (que les pts de pages de code Google vous à.)
Vous pouvez maintenant plus besoin d'utiliser l'outil de ligne de commande qui vient avec python-twitter pour obtenir l'ensemble des jetons d'accès et secrets,
J'ai codé quelque chose lié à cette question. import tweepy
consumer_key = Your_consumer_key
consumer_secret = Your_consumer_secret
access_token = Your_access_token
access_token_secret = Your_access_token_secret_key
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
single_tweet = 'hello world'
api.update_status(single_tweet)
print "successfully Updated"