我在Flask(http://www.tweepy.org/)应用程序中使用了Tweepy(http://flask.pocoo.org/)。一切正常,我可以成功获得令牌以及发布状态更新。问题是,当我尝试更改已保存的Twitter帐户(获取新的访问权限)时,虽然我可以看到它获得新的访问权限,但使用新访问权限创建的Tweepy API保持不变(前一个用户)。当我API.me()
它返回前一个用户的用户信息时。只有在我重新启动整个Flask应用程序后才能解决此问题。
我在获取用户信息之前检查了API使用的访问令牌。它显示了不同的访问令牌(这是正确的),但提取的用户信息不正确。
这是一个显示我的程序逻辑的示例代码:
import tweepy
c_key = "My consumer key"
c_secret = "My consumer secret"
auth = tweepy.OAuthHandler(c_key, c_secret)
def set_access_token(token, token_sec):
auth.set_access_token(token, token_sec)
def get_me():
print "access_token"
print auth.access_token.key
print "access_token_secret"
print auth.access_token.secret
api = tweepy.API(auth)
return api.me()
if __name__=="__main__":
tokens = [("tok 1", "sec1"), ("tok2", "sec2")]
for token in tokens:
set_access_token(token[0], token[1])
print get_me().screen_name
#output
user1
user1
#expected output
user1
user2
我应该在每次操作后关闭连接,还是什么?有帮助吗?
我不使用Flask-Tweepy,因为
http://flask-tweepy.readthedocs.org/en/latest/
Flask-Tweepy 0.1目前仅支持以用户身份连接 注册了应用程序(也就是说,你只能更新状态 那个用户)。要更新状态,您还需要访问令牌 密钥和访问令牌密钥,您可以在其上创建或检索 Twitter开发者网站。
修改:
我找到了解决此问题的解决方案/解决方法。如果您每次都创建一个新的auth
对象,而不仅仅是更改访问令牌,那么它就有效。
if __name__=="__main__":
tokens = [("tok 1", "sec1"), ("tok2", "sec2")]
for token in tokens:
auth = tweepy.OAuthHandler(c_key, c_secret)
set_access_token(token[0], token[1])
print get_me().screen_name
#output
user1
user2
答案 0 :(得分:1)
我找到了解决此问题的解决方案/解决方法。如果您每次都创建一个新的auth对象,而不仅仅是更改访问令牌,它就可以工作。
if __name__=="__main__":
tokens = [("tok 1", "sec1"), ("tok2", "sec2")]
for token in tokens:
auth = tweepy.OAuthHandler(c_key, c_secret)
set_access_token(token[0], token[1])
print get_me().screen_name
#output
user1
user2
虽然我不确定这是否是理想的解决方案,因为它每次都会重新创建auth
对象,这对我来说似乎并不合适。但这是我能让它发挥作用的唯一方式。