我一直在寻找一种从Python客户端更新我的Twitter状态的方法。由于此客户端只需要访问一个Twitter帐户,因此应该可以使用预先生成的oauth_token和secret来执行此操作,根据http://dev.twitter.com/pages/oauth_single_token
然而,示例代码似乎不起作用,我得到'无法验证您'或'错误签名'..
由于那里有许多不同的python-twitter库(并非所有这些都是最新的)我真的很感激,如果有人能指出我目前正在为POST请求工作的库,或者发布一些示例代码!
更新 我已经尝试了Pavel的解决方案,只要新消息只有一个字长就可以工作,但只要它包含空格,我就会收到这个错误:
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'}
知道为什么会这样吗?
提前多多感谢,
霍夫
答案 0 :(得分:9)
您可能对此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)之后,您应该拥有使用者密钥和密钥。它们对于应用程序来说是独一无二的。
接下来,您需要将应用与您的帐户相关联,根据来源(sic!)中的说明编辑get_access_token.py并运行。你现在应该拥有Twitter Access Token密钥和秘密。
>>> 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(不确定它是否对所有人都可见)
那说我必须补充说我不喜欢这些代码,所以如果我要使用它,我会重写它。
编辑:我已经让这个例子更清晰了。答案 1 :(得分:7)
我已经能够使用另一个库来解决这个问题 - 所以我会在这里发布我的解决方案以供参考:
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
答案 2 :(得分:2)
Python-Twitter文档的最新位置现在位于GitHub上(谷歌代码页指向您。)
您现在不再需要使用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传递给Api()调用 - 这将导致打印所有HTTP对话,以便您可以看到Twitter错误消息。
一旦凭据正常工作,您就可以尝试调用PostUpdate(),甚至只调用GetTimeline()
答案 3 :(得分:0)
我编写了一些与此问题相关的内容。
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"