API Twitter: простое обновление статуса (Python)
-
11-10-2019 - |
Вопрос
Я искал способ обновить свой статус в Твиттере от клиента Python. Поскольку этому клиенту необходимо получить доступ только к одной учетной записи Twitter, можно сделать это с предварительно сгенерированным OAuth_token и Secret, согласно http://dev.twitter.com/pages/oauth_single_token
Однако пример кода, похоже, не работает, я получаю «не мог аутентифицировать вас» или «неверная подпись» ..
Поскольку существует множество различных библиотеки Python-Twitter (и не все они в курсе), я бы очень признателен, если бы кто-то мог указать мне библиотеку, которая в настоящее время работает для запросов на почту, или опубликовать какой-то образец кода !
Обновлять:Я попробовал решение Павела, и оно работает до тех пор, пока новое сообщение составляет всего одно слово длиной, но как только оно содержит пробелы, я получаю эту ошибку:
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
Однако, если обновление - это всего лишь одно слово, оно работает:
status = api.PostUpdate('helloworld')
{'status': 'helloworld'}
Есть идеи, почему это может произойти?
Заранее большое спасибо,
Хофф
Решение 2
Я смог решить эту проблему, используя другую библиотеку - поэтому я опубликую здесь свое решение для справки:
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
Другие советы
Вас может быть заинтересован в этом http://code.google.com/p/python-twitter/
К сожалению, документы не существуют, чтобы быть справедливыми, а последнее «выпуск» - в 2009 году.
Я использовал код из HG:
wget http://python-twitter.googlecode.com/hg/get_access_token.py
wget http://python-twitter.googlecode.com/hg/twitter.py
После (длительного) процесса регистрации приложений ( http://dev.twitter.com/pages/auth#register ) у вас должен быть ключ потребителя и секрет. Они уникальны для приложения.
Затем вам нужно подключить приложение к своей учетной записи, отредактировать get_access_token.py в соответствии с инструкциями в источнике (sic!) И запустите. Теперь у вас должен быть ключ и секрет токена доступа в Твиттере.
>>> 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!
И это работает для меня http://twitter.com/#!/pawelprazak/status/16504039403425792 (Не уверен, видно ли это всем)
Тем не менее, я должен добавить, что мне не нравится код, поэтому, если я буду использовать его, я переписал его.
РЕДАКТИРОВАТЬ: Я прояснил этот пример более ясным.
Самое последнее место для документации Python-Twitter в настоящее время находится на GitHub (на которую на вас указывает страница кода Google.)
Теперь вам больше не нужно использовать инструмент командной строки, который поставляется с Python-Twitter, чтобы получить полный набор токенов и секретов доступа, https://dev.twitter.com Позвольте вам запросить их, когда вы зарегистрируете свое приложение.
После того, как у вас есть четыре различных значения учетных данных, первое, что вы хотите сделать, это проверить их, сделав тест API:
API = Twitter.API (Consumer_Key = 'consumer_key', consumer_secret = 'consumer_secret', access_token_key = 'access_token', access_token_secret = 'access_token_secret')
print api.verifycredentials ()
Это покажет вам, работают ли ваши учетные данные или нет. Если вы получите ошибку, следующим шагом будет пройти в Debughttp = True To Call API () - это приведет к печати всего разговора HTTP, чтобы вы могли увидеть сообщение об ошибке в Твиттере.
Как только учетные данные работают, вы можете попытаться позвонить по Postupdate () или даже просто GetTimeline ()
Я закодировал что -то, связанное с этим вопросом.
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"