【问题标题】:Twitter Oauth request token response 401, I cannot resolveTwitter Oauth 请求令牌响应 401,我无法解决
【发布时间】:2019-02-21 09:02:14
【问题描述】:

我尝试使用 Twitter Oauth 登录我的应用程序(Web)

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."}]}

我的代码有什么问题?

【问题讨论】:

    标签: twitter oauth twitter-oauth


    【解决方案1】:

    我重新生成了消费者 API 密钥,我的应用程序可以正常工作

    【讨论】:

      猜你喜欢
      • 2011-04-10
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 2011-09-05
      • 2017-01-10
      • 2016-10-23
      相关资源
      最近更新 更多