Flask 使用不同访问令牌的用户信息不正确。特威比

Flask 使用不同访问令牌的用户信息不正确。特威比,flask,tweepy,Flask,Tweepy,我在Flask()应用程序中使用Tweepy()。一切正常,我可以成功地获得代币以及状态更新。问题是,当我尝试更改保存的twitter帐户(获取新的访问令牌)时,尽管我可以看到它获取了新的访问令牌,但使用新访问令牌创建的Tweepy API保持不变(前一个用户)。当我执行API.me()时,它将返回前一个用户的用户信息。只有在我重新启动整个Flask应用程序后,这个问题才得以解决 在获取用户信息之前,我检查了API使用的访问令牌。它显示不同的访问令牌(这是正确的),但获取的用户信息不正确 下面是

我在Flask()应用程序中使用Tweepy()。一切正常,我可以成功地获得代币以及状态更新。问题是,当我尝试更改保存的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 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
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对象,而不仅仅是更改访问令牌,那么它就可以工作

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
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
对象,这对我来说似乎不合适。但这是我让它工作的唯一方法。

你应该将你的解决方案作为答案发布,并在可能的时候接受它