Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Twitter API在尝试获取用户时返回401(未经授权)';她在推特上的朋友_Python_Twitter_Oauth_Twitter Oauth - Fatal编程技术网

Python Twitter API在尝试获取用户时返回401(未经授权)';她在推特上的朋友

Python Twitter API在尝试获取用户时返回401(未经授权)';她在推特上的朋友,python,twitter,oauth,twitter-oauth,Python,Twitter,Oauth,Twitter Oauth,我正在使用下面的代码,有一段时间它工作得很有魅力,但最近在10次尝试中有9次我从twitter api中得到了错误 from twython import Twython, TwythonError from pymongo import Connection

我正在使用下面的代码,有一段时间它工作得很有魅力,但最近在10次尝试中有9次我从twitter api中得到了错误

from twython import Twython, TwythonError                                                                             
from pymongo import Connection                                                                                        
import pika, time                                                                                                     

connection = Connection("host")
connection.admin.authenticate('admin', 'passwords')
db = connection['tweets']

consumer_key="key"
consumer_secret="secret"

access_token="token"
access_token_secret="secret_token"

t = Twython(app_key=consumer_key,
            app_secret=consumer_secret,
            oauth_token=access_token,
            oauth_token_secret=access_token_secret 
           )

Q ='download_friends'

r_connection = pika.BlockingConnection(pika.ConnectionParameters(
               'host'))
channel = r_connection.channel()
channel.queue_declare(queue= Q, 
                arguments={'x-message-ttl':600000})   


while 1:
    method_frame, header_frame, id = channel.basic_get(Q)
    if db.friends.find_one({"_id": id}) != None:
        print "Panic, user already exists"
        continue
    try:
        r = t.get_friends_list(user_id = id)
    except Exception as ex:
        print ex, id
    else:
        print id
        r['_id'] = id
        r['time'] = time.time()
        db.friends.save(r)

    time.sleep(121)
Twitter API返回401(未经授权),出现错误 正在处理您的请求

这是一个堆栈跟踪

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/twython/endpoints.py", line 290, in get_friends_list
    return self.get('friends/list', params=params)
  File "/usr/local/lib/python2.7/dist-packages/twython/api.py", line 230, in get
    return self.request(endpoint, params=params, version=version)
  File "/usr/local/lib/python2.7/dist-packages/twython/api.py", line 224, in request
    content = self._request(url, method=method, params=params, api_call=url)
  File "/usr/local/lib/python2.7/dist-packages/twython/api.py", line 194, in _request
    retry_after=response.headers.get('retry-after'))
twython.exceptions.TwythonAuthError: Twitter API returned a 401 (Unauthorized), An error occurred processing your request.

它可以获得访问令牌,但仅此而已。

可能是这样,因为用户id具有私人配置文件,而您无法访问它的朋友

我还认为,这是速率限制的问题,但根据twitter api,若达到限制,它将返回429错误

更新:


我没有测试,但发现了类似的情况:

可能重复@AlexThornton不,这不是重复。我的代码有时有效,有时返回错误,而在链接上的问题是如何生成有效代码。在我的例子中,一些隐藏的变量开始发挥作用,否则好的代码会返回错误,而我却找不到它。那么错误发生在哪里呢?你能发布完整的回溯吗?@dorvak这是twitter api返回的错误。有时候。有时不会,但最近错误率越来越高。@Moonwalker您是否收到一个JSON错误响应,并返回401HTTP状态的Twitter错误代码?你能分享吗?谢谢,有问题的个人资料被删除了,因此出现了错误。
twitter = Twython('API key', 'API secret', oauth_version=2)
ACCESS_TOKEN = twitter.obtain_access_token()

print ACCESS_TOKEN

t = Twython('API key', access_token=ACCESS_TOKEN)
r = t.get_friends_list(user_id = 'id')