首页 > 解决方案 > 无法使用 python-twitter 模块验证 Twitter 凭据

问题描述

我正在尝试使用 python-twitter 最终建立一个 twitter 机器人。

在 IDLE 中,我已经

import twitter

api = twitter.Api(consumer_key=['xxxx '],
                  consumer_secret=['xxx'],
                  access_token_key=['x-xxx'],
                  access_token_secret=['xx'])

然后

api.VerifyCredentials()

这给了我一个很长的回溯错误,如下所示。我究竟做错了什么?

Traceback (most recent call last):
  File "<pyshell#24>", line 1, in <module>
    api.VerifyCredentials()
  File "C:\Users\redye\AppData\Local\Programs\Python\Python39\lib\site-packages\twitter\api.py", line 4699, in VerifyCredentials
    resp = self._RequestUrl(url, 'GET', data)
  File "C:\Users\redye\AppData\Local\Programs\Python\Python39\lib\site-packages\twitter\api.py", line 4992, in _RequestUrl
    resp = self._session.get(url, auth=self.__auth, timeout=self._timeout, proxies=self.proxies)
  File "C:\Users\redye\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "C:\Users\redye\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\sessions.py", line 528, in request
    prep = self.prepare_request(req)
  File "C:\Users\redye\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\sessions.py", line 456, in prepare_request
    p.prepare(
  File "C:\Users\redye\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\models.py", line 320, in prepare
    self.prepare_auth(auth, url)
  File "C:\Users\redye\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\models.py", line 551, in prepare_auth
    r = auth(self)
  File "C:\Users\redye\AppData\Local\Programs\Python\Python39\lib\site-packages\requests_oauthlib\oauth1_auth.py", line 108, in __call__
    r.url, headers, _ = self.client.sign(
  File "C:\Users\redye\AppData\Local\Programs\Python\Python39\lib\site-packages\oauthlib\oauth1\rfc5849\__init__.py", line 313, in sign
    ('oauth_signature', self.get_oauth_signature(request)))
  File "C:\Users\redye\AppData\Local\Programs\Python\Python39\lib\site-packages\oauthlib\oauth1\rfc5849\__init__.py", line 127, in get_oauth_signature
    uri, headers, body = self._render(request)
  File "C:\Users\redye\AppData\Local\Programs\Python\Python39\lib\site-packages\oauthlib\oauth1\rfc5849\__init__.py", line 209, in _render
    headers = parameters.prepare_headers(
  File "C:\Users\redye\AppData\Local\Programs\Python\Python39\lib\site-packages\oauthlib\oauth1\rfc5849\utils.py", line 32, in wrapper
    return target(params, *args, **kwargs)
  File "C:\Users\redye\AppData\Local\Programs\Python\Python39\lib\site-packages\oauthlib\oauth1\rfc5849\parameters.py", line 59, in prepare_headers
    escaped_value = utils.escape(value)
  File "C:\Users\redye\AppData\Local\Programs\Python\Python39\lib\site-packages\oauthlib\oauth1\rfc5849\utils.py", line 56, in escape
    raise ValueError('Only unicode objects are escapable. ' +
ValueError: Only unicode objects are escapable. Got <generator object to_unicode.<locals>.<genexpr> at 0x0000027FCEE7B510> of type <class 'generator'>.

标签: pythonauthenticationtwitterpython-twitter

解决方案


感谢 OctaveL 的帮助。

最后我找到了这个视频:

https://www.youtube.com/watch?v=ewq-91-e2fw

并完全遵循它。我担心 API 密钥和使用者密钥(没有任何区别)究竟有什么区别。按照 VSCode 中的说明,一切正常。

我怀疑我在某处搞砸了一些格式或空格。


推荐阅读