Python OAuth请求Twitter返回403 - 需要SSL

0 投票
1 回答
611 浏览
提问于 2025-04-18 01:10

我正在使用Python的oauth2库,尝试实现一个三步走的oauth请求(具体步骤可以参考这里 - http://www.linuxuser.co.uk/news/handling-twitters-three-legged-oauth-process),目的是为了向Twitter发送请求,但我只得到了一个403的错误回应,提示“需要SSL”。

我参考了这个指南 (https://bitbucket.org/david/django-oauth-plus/wiki/consumer_example) 来帮助我设置我的Django 1.5应用程序以发送请求,但没有成功。

我现在使用的Python版本是2.7。

(我尝试过在requests.get调用中添加verify参数,并在我的客户端上使用add_certificate)

我想要明确的是,如何在我的请求中添加SSL,下面是我当前代码的快照 --

import oauth2 as oauth
import requests
import urlparse

from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.conf import settings

from twitterapp.models import User

consumer = oauth.Consumer(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SEC)
client = oauth.Client(consumer)
client.add_certificate

request_token_url = 'http://api.twitter.com/oauth/request_token'
access_token_url = 'http://api.twitter.com/oauth/access_token'
authorize_url='https://api.twitter.com/oauth/authorize'

def signin(request):
    oauth_request = oauth.Request.from_consumer_and_token(consumer, http_url=request_token_url, parameters={'oauth_callback':callback_url})
    oauth_request.sign_request(oauth.SignatureMethod_HMAC_SHA1(), consumer, None)
    response = requests.get(request_token_url, headers=oauth_request.to_header(), verify=True)
    request_token = dict(urlparse.parse_qsl(response.content))

    url = 'https://api.twitter.com/oauth/authorize?oauth_token=%s' % request_token['oauth_token']

    return HttpResponseRedirect(url)

1 个回答

1

这里:

request_token_url = 'http://api.twitter.com/oauth/request_token'
access_token_url = 'http://api.twitter.com/oauth/access_token'

这些请求需要通过 https:// 来进行

所以

request_token_url = 'https://api.twitter.com/oauth/request_token'
access_token_url = 'https://api.twitter.com/oauth/access_token'

这样就可以解决问题了。

撰写回答