我试图让 python 使用 Twython 为我发送一条推文,但由于某种原因,我尝试的所有内容都不起作用。
我遵循了Twython自述,但仍然无法实现我想要的。
下面是我最近尝试的代码:
from twython import Twython, TwythonError
APP_KEY = "KEYHERE"
APP_SECRET = "SECRETHERE"
twitter = Twython(APP_KEY, APP_SECRET)
auth = twitter.get_authentication_tokens()
OAUTH_TOKEN = auth['oauth_token']
OAUTH_TOKEN_SECRET = auth['oauth_token_secret']
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
try:
twitter.update_status(status='See how easy this was?')
except TwythonError as e:
print e
运行上述代码时,我得到以下回溯错误:
Twitter API returned a 401 (Unauthorized), Invalid or expired token
有人知道我做错了什么吗?更重要的是,我该如何解决这个问题?
我没有足够的积分获得赏金,但我真的很感谢你的帮助!
预先感谢
编辑
Traceback (most recent call last):
File "C:\testtweet.py", line 20, in <module>
final_step = twitter.get_authorized_tokens(oauth_verifier)
File "C:\Python27\lib\site-packages\twython\api.py", line 313, in get_authorized_tokens
raise TwythonError('Unable to decode authorized tokens.')
TwythonError: Unable to decode authorized tokens.
以上是从@justhalf提供的代码中得到的回溯
最后谢谢你
代码返回 Twitter API 返回 401(未经授权)、无效或过期
令牌的原因是它在调用 get_authentication_tokens()
后需要oauth_verifier 尝试成功调用 Twitter 的步骤
from twython import Twython, TwythonError
twitter = Twython(APP_KEY, APP_SECRET)
auth = twitter.get_authorization_tokens(callback_url='http://google.com')
oauth_token = auth['oauth_token']
oauth_token_secret = auth['oauth_token_secret']
print auth
print auth['auth_url']
auth['auth_url']将打印如下响应:
https://api.twitter.com/oauth/authenticate?oauth_token=xxxxxxxxx
浏览到此URL以授权您的应用
应用程序获得授权后,它会将客户端发送到callback_url
callback_url
将附加oauth_verifier
类似 http://google.com/?oauth_verifier=xxxxxx
根据您使用的web框架,您需要获取
oauth_verifier
的响应现在创建一个新的Twython实例
twitter = Twython(APP_KEY, APP_SECRET, oauth_token, oauth_token_secret)
final_tokens = twitter.get_authorized_tokens(oauth_verifier)
print final_tokens
# these are the keys you will use to make calls on the users behalf from here on forward
f_oauth_token = final_tokens['oauth_token']
f_oauth_token_secret = final_tokens['oauth_token_secret']
更新推特状态:
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN=f_oauth_token, OAUTH_TOKEN_SECRET=f_oauth_token_secret)
try:
twitter.update_status(status='See how easy this was?')
except TwythonError as e:
print e
并更新@Games Brainiac提到的twitter的应用程序设置
让我们一起努力找出问题所在。
我在文档中注意到了这一点:
现在,oauth_verifier已存储
到变量中,您将需要创建一个新的 Twython 实例并获取最终用户令牌
以及它下面的代码:
twitter = Twython(APP_KEY, APP_SECRET,
OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
final_step = twitter.get_authorized_tokens(oauth_verifier)
所以看来你错过了final_step
?
然后之后(来自文档):
获得最终用户令牌后,将其存储在数据库中以备将来使用!:
OAUTH_TOKEN = final_step['oauth_token']
OAUTH_TOKEN_SECERT = final_step['oauth_token_secret']
之后,我猜您将需要使用最终的OAUTH_TOKEN
和OAUTH_TOKEN_SECRET
创建另一个新的Twython实例。所以我认为完整的代码是这样的:
from twython import Twython, TwythonError
import requests
APP_KEY = "KEYHERE"
APP_SECRET = "SECRETHERE"
twitter = Twython(APP_KEY, APP_SECRET)
auth = twitter.get_authentication_tokens()
OAUTH_TOKEN = auth['oauth_token']
OAUTH_TOKEN_SECRET = auth['oauth_token_secret']
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
### This is the part you're missing ###
oauth_verifier_url = auth['auth_url']
oauth_verifier = requests.get(oauth_verifier_url)
# Getting the FINAL authentication tokens
final_step = twitter.get_authorized_tokens(oauth_verifier)
OAUTH_TOKEN = final_step['oauth_token']
OAUTH_TOKEN_SECRET = auth['oauth_token_secret']
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
### Up until this line ###
try:
twitter.update_status(status='See how easy this was?')
except TwythonError as e:
print e
我没有Twitter app key,所以我不能尝试。
但我想这应该足以解决你的问题。我希望这能有所帮助。=)
请注意,我使用了Python中的请求
包。
与< code>Twython实际向您展示的方式相比,有一种更简单的方式来更新您的帖子。不过,这将在您的API控制台空间上花费更多的工作,所以让我开始吧。
现在你已经到了你应该在的地方,点击设置选项卡,就在详细信息选项卡旁边,如上所示。
单击如上所示的选项。现在,在你选择了这个选项后,向下滚动直到你看到一个蓝色的按钮,上面写着更新这个twitter的应用程序设置。
好的,现在转到您的代码编辑器,并编写以下样板代码(这些键不起作用,我刚刚摆脱了应用程序,所以这里没有黑客攻击,:P我给出它们只是为了指示您应该期望的键的长度):
from twython import Twython
APP_KEY = '' # Customer Key here
APP_SECRET = '' # Customer secret here
OAUTH_TOKEN = '1936951807-z5bBNING8P1TU2onWvJh5dh8hoYlYAmNOaAx2OX' # Access Token here
OAUTH_TOKEN_SECRET = 'QWJEZ7ridSeZGdxJELSBk7mupCpMA9q9sLCou5ywg' # Access Token Secret here
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
twitter.update_status(status="Hello from Python! :D")
之后,查看您的twitter,您应该会看到一条新推文,上面写着“来自Python的Hello!: D”。
我试图使用Twitter API从给定的推文导入视频。但是,当我使用终结点时,它不会像返回图像那样返回视频的任何扩展实体,而是返回一个链接到嵌入有视频播放器的视频容器的url实体,该视频容器包含一个指向视频的模糊链接。 以下是一个例子: 我正试图在 使用推特应用编程接口的endpoint和推特id,我得到这样的响应: 遵循URL后,视频标签的来源为
我正在使用以下代码来收集与某个主题相关的推文,但在我提取的所有推文中,“places”属性为“无”。我做错了什么吗?此外,该代码旨在提取现有的推文,我不需要流式处理API解决方案,也不寻找流式处理API的这种解决方案:https://www.quora.com/How-can-I-get-a-stream-of-tweets-from-a-particular-country-using-Twit
我正在尝试使用最新版本的Twython和Python 2.7.3设置流。我正在尝试在依赖于OAuth1文档的流媒体文档中重现示例。使用以下代码会产生401个错误,直到我终止执行: “OAUTH_TOKEN”和“OAUTH_TOKEN_SECRET”的值最终设置为 unicode 字符串。我已经设置了“APP_KEY”和“APP_SECRET”如上所述,或者设置为具有相同结果的unicode字符串。
我正在尝试嵌入来自用户公共流的最新推文。我这样做是因为 这已经不起作用了。我以为这是因为推特都很旧了,但是在把名字换成活动账户后,它也不起作用了。 我不想手动嵌入推文。我最好不要使用twitter小部件。 我已经尝试了tweet.seaofclouds.com的Twitter插件,但它也没有找到旧的推文(演示) 所以我需要的是一种显示最新推文的方法,无论该用户的年龄如何:@nietopmeisje
put twitter on your website with tweet!, an unobtrusive javascript plugin for jquery.
我可以用简单的代码发布一条推文: 问题是,这条推文将发布在我的个人资料上。我的问题是,我可以在其他帐户上发布推文,但使用我的密钥和令牌吗?像这样: