Twitter Oauth-запрос токена ответа 401, я не могу разрешить - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь использовать Twitter Oauth для входа в мое приложение (Интернет)

import requests
import random
import time
import hashlib
import hmac
import urllib
import base64

CONSUMER_KEY = "TestKey"
CONSUMER_SECRET = "TestSecret"
REQUEST_TOKEN_URL = "https://api.twitter.com/oauth/request_token"
CALLBACK_URL = "https://www.example.com/cgi-bin/twittercallback"

def urlencode(s):
    return urllib.parse.quote(s, safe='')

def request_token(url, method):
    params = dict()
    params['oauth_callback'] = CALLBACK_URL
    params['oauth_consumer_key'] = CONSUMER_KEY
    params['oauth_nonce'] = str(random.getrandbits(64))
    params['oauth_signature_method'] = 'HMAC-SHA1'
    params['oauth_timestamp'] = str(int(time.time()))
    params['oauth_version'] = '1.0'

    keys = sorted(list(params.keys()))
    enc_params = urlencode('&'.join(['%s=%s' % (urlencode(key), urlencode(params[key])) for key in keys]))
    base_string = '%s&%s&%s' % (method.upper(), urlencode(url), enc_params)
    key = CONSUMER_SECRET + '&'
    params['oauth_signature'] = base64.standard_b64encode(
        hmac.new(key.encode(), base_string.encode(), hashlib.sha1).digest()).decode('ascii')
    keys = sorted(list(params.keys()))
    authorize = 'OAuth ' + ', '.join('%s="%s"' % (key, urlencode(params[key])) for key in keys)

    ret = requests.post(url, headers={'Authorization': authorize})
    print(ret, ret.text)

if __name__ == '__main__':
    request_token(REQUEST_TOKEN_URL, 'POST')

Я пробовал много раз, но тоже не получилось, информация об ошибке

{"errors":[{"code":32,"message":"Could not authenticate you."}]}

что плохого в моем коде?

1 Ответ

0 голосов
/ 18 сентября 2018

Я регенерирую пользовательские ключи API, мое приложение может работать нормально

...