颤抖的不良身份验证数据



我正在尝试通过Tweepy访问Twitter API。我遇到tweepy.error.TweepError: [{'code': 215, 'message': 'Bad Authentication data.'}]错误。

我的API访问在twitter_client.py中降低:

import os
import sys
from tweepy import API
from tweepy import OAuthHandler
def get_twitter_auth():
    """Setup twitter authentication
    Return: tweepy.OAuthHandler object
    """
    try:
        consumer_key = os.environ['TWITTER_CONSUMER_KEY']
        consumer_secret = os.environ['TWITTER_CONSUMER_SECRET']
        access_token = os.environ['TWITTER_ACCESS_TOKEN']
        access_secret = os.environ['TWITTER_ACCESS_SECRET']
    except KeyError:
        sys.stderr.write("TWITTER_* environment variable not setn")
        sys.exit(1)
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_secret)
    return auth
def get_twitter_client():
    """Setup twitter api client
    Return: tweepy.API object
    """
    auth = get_twitter_auth()
    client = API(auth)
    return client

然后我尝试获得我的最后4条推文:

from tweepy import Cursor
from twitter_client import get_twitter_client
if __name__ == '__main__':
    client = get_twitter_client()
    for status in Cursor(client.home_timeline()).items(4):
        print(status.text)

并获得该错误。我如何解决它?

我正在使用Python 3.6,并且我已经通过PIP安装了twepy,它应该是tweepy的最后版本。

upd:我发现问题在环境变量中。Twitter API以某种方式无法理解。但是,当我只有print(consumer_key, consumer_secret, access_token, access_secret)时,一切都在其位置

import tweepy

以这种方式导入可改善代码可读性,尤其是在使用时。例如twepy.api()

client.home_timeline()

home_timeline之后的括号不应该在那里。

应该是

for status in Cursor(client.home_timeline).items(4):
    print(status.text)

import tweepy 
auth = tweepy.OAuthHandler(<consumer_key>, <consumer_secret>)
auth.set_access_token(<access_token>, <access_secret>)
client = tweepy.API(auth)
for status in tweepy.Cursor(client.user_timeline).items(200):
    process_status(status.text)

您可以通过导入加载dotenv来解决此问题,该载荷将获得.env变量。

import os
import sys
from tweepy import API
from tweepy import OAuthHandler
from dotenv import load_dotenv
def get_twitter_auth():
    """Setup twitter authentication
    Return: tweepy.OAuthHandler object
    """
    try:
        consumer_key = os.getenv('CONSUMER_KEY')
        consumer_secret = os.getenv('CONSUMER_SECRET')
        access_token = os.getenv('ACCESS_TOKEN')
        access_secret = os.getenv('TWITTER_ACCESS_SECRET')
    except KeyError:
        sys.stderr.write("TWITTER_* environment variable not setn")
        sys.exit(1)
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_secret)
    return auth
def get_twitter_client():
    """Setup twitter api client
    Return: tweepy.API object
    """
    auth = get_twitter_auth()
    client = API(auth)
    return client
from tweepy import Cursor

if __name__ == '__main__':
    client = get_twitter_client()
    for status in Cursor(client.home_timeline()).items(4):
        print(status.text)

最新更新