Python Twitter API程序返回错误代码403:Forbidden



我是一个在Freecodecamp.com上学习python基础课程的初学者。我使用的是Mac操作系统python3.10。

我正在尝试使用http请求连接到twitter的API,收集数据,然后解析这些数据。

我创建了一个twitter开发者帐户,得到了我的密钥和代币以及所有这些东西。

这里有一个链接,指向我正在处理的确切问题(向下滚动到粗体显示"应用程序2:Twitter"的位置(。

这是我试图运行的代码:

import urllib.request, urllib.parse, urllib.error
import twurl
import ssl

# https://apps.twitter.com/
# Create App and get the four strings, put them in hidden.py
TWITTER_URL = 'https://api.twitter.com/1.1/statuses/user_timeline.json'
# Ignore SSL certificate errors
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
while True:
    print('')
    acct = input('Enter Twitter Account:')
    if (len(acct) < 1): break
    url = twurl.augment(TWITTER_URL,
                        {'screen_name': acct, 'count': '2'})
    print('Retrieving', url)
    connection = urllib.request.urlopen(url, context=ctx)
    data = connection.read().decode()
    print(data[:250])
    headers = dict(connection.getheaders())
    # print headers
    print('Remaining', headers['x-rate-limit-remaining'])

这是代码返回的错误:

Enter Twitter Account:drchuck
Retrieving https://api.twitter.com/1.1/statuses/user_timeline.json?oauth_consumer_key=9uxUyq33IRxCL5CZf7LyfubX3&oauth_timestamp=1641148177&oauth_nonce=80764354&oauth_version=1.0&screen_name=drchuck&count=2&oauth_token=1423673018467983360-Tg6vMoRAWO7FCgnGKhz9WgrPUoCsZa&oauth_signature_method=HMAC-SHA1&oauth_signature=C%2FQIvEhgZ8AQQooC4E%2BekJSZwjE%3D
Traceback (most recent call last):
  File "/Users/jguinn/env/twtr-api-demo/twitter1.py", line 23, in <module>
    connection = urllib.request.urlopen(url, context=ctx)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/urllib/request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/urllib/request.py", line 525, in open
    response = meth(req, response)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/urllib/request.py", line 634, in http_response
    response = self.parent.error(
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/urllib/request.py", line 563, in error
    return self._call_chain(*args)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/urllib/request.py", line 496, in _call_chain
    result = func(*args)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/urllib/request.py", line 643, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

我在推特开发者网站上寻找有关响应代码的信息,推特说403:禁止代码意味着:

"请求已被理解,但已被拒绝或无法访问允许。附带的错误消息将解释原因">

作为他们建议的解决方案:

"检查您的开发人员帐户是否包括对端点的访问权限你正在尝试使用。您可能还需要列出您的应用程序许可(例如,参与API或广告API(或注册访问">

我真的不确定这意味着什么。如有任何帮助,我们将不胜感激。谢谢

我不知道你是否已经解决了这个问题,但以下是我的做法。

你必须在twitter上的开发者门户网站上申请提升访问权限。这是一个非常顺利的过程,一旦你做到了,你就会变得很好。

问题不在于代码,代码是绝对正确的。

第一步:在Twitter 上注册一个开发者帐户

第二步:升级到高架接入(免费(

第三步:生成APT密钥、API密钥、访问令牌和Acess令牌密钥

唯一需要更改的是hidden.py文件中的consumer_key、consumer_secret、token_key和token_secret。(consumer_key=API密钥,consumer_secret=API密钥机密,token_key=访问令牌,token_secret=访问令牌机密(

相关内容

最新更新