具有不同访问令牌的用户信息不正确。 Tweepy

时间:2014-10-15 05:13:55

标签: flask tweepy

我在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

1 个答案:

答案 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对象,这对我来说似乎并不合适。但这是我能让它发挥作用的唯一方式。