我正在尝试从twitter API检索承载令牌,以允许进行Twitter's API documentation中所述的仅应用程序身份验证。 conf.ini包含consumer_key和consumer_secret。
到目前为止,这是我的代码:
import configparser
import requests
import base64
conf = configparser.ConfigParser()
conf.read('conf/conf.ini')
consumer_key = conf['consumer-api-key']['value']
consumer_secret = conf['consumer-secret']['value']
key_secret = base64.urlsafe_b64encode('{}:{}'.format(consumer_key, consumer_secret).encode('ascii')).decode('ascii')
base_url = 'https://api.twitter.com/'
auth_url = '{}oauth2/token'.format(base_url)
auth_headers = {
'Authorization': 'Basic {}'.format(key_secret),
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
}
auth_data = {
'grant_type': 'client_credentials'
}
auth_resp = requests.post(auth_url, headers=auth_headers, data=auth_data)
print(auth_resp.status_code)
因此,我尝试了多种不同的方法,甚至在重新生成用户密钥和机密方面都做得很。在每种情况下,我都收到以下答复:
'< HTTP/1.1 403 Forbidden' and {"errors":[{"code":99,"message":"Unable to verify your credentials","label":"authenticity_token_error"}.
我在故障排除中尝试了以下所有操作:
我也有人尝试将我的密钥与他们的代码一起使用,并且能够成功进行应用程序身份验证。我还检查了代码的每一步,可以看到变量似乎都是我所期望的。
我知道这是一个重复的主题,但是以前提供的答案似乎都无法解决。 预先感谢,您可以提供任何帮助。
我的编辑继续进行以下问题排查:
再次尝试使用cURL只是尝试确保我的密钥有效:
curl -i -X POST -H "Authorization: Basic TOKEN" -d "grant_type=client_credentials" -H "Content-Type:application/x-www-form-urlencoded;charset=UTF-8" "https://api.twitter.com/oauth2/token"
HTTP/1.1 403 Forbidden
cache-control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0
content-disposition: attachment; filename=json.json
content-length: 105
content-type: application/json;charset=utf-8
date: Wed, 18 Jul 2018 18:06:00 GMT
expires: Tue, 31 Mar 1981 05:00:00 GMT
last-modified: Wed, 18 Jul 2018 18:06:00 GMT
ml: S
pragma: no-cache
server: tsa_b
status: 403 Forbidden
strict-transport-security: max-age=631138519
x-connection-hash: 4c3591363bea2e655f52dc9ec52aa5ee
x-content-type-options: nosniff
x-frame-options: DENY
x-response-time: 66
x-transaction: 001f3cd100c15114
x-tsa-request-body-time: 0
x-twitter-response-tags: BouncerCompliant
x-ua-compatible: IE=edge,chrome=1
x-xss-protection: 1; mode=block; report=https://twitter.com/i/xss_report
Connection: Keep-Alive
Set-Cookie: personalization_id="v1_Ro1inxBH+QRZGVyrYilreg=="; Expires=Fri, 17 Jul 2020 18:06:00 GMT; Path=/; Domain=.twitter.com
Set-Cookie: guest_id=v1%3A153193716084353644; Expires=Fri, 17 Jul 2020 18:06:00 GMT; Path=/; Domain=.twitter.com
{"errors":[{"code":99,"message":"Unable to verify your credentials","label":"authenticity_token_error"}]}
TOKEN是...产生的结果
base64.urlsafe_b64encode('{}:{}'.format(twconsumer_key, twconsumer_secret).encode('UTF-8')).decode('UTF-8')
答案 0 :(得分:0)
此代码有效。我有一个Web代理,用于修改流量。
编辑:使用上述方法获得承载令牌后,我能够将其连续传递给Twitter并进行搜索。