0

これは、私がここに投稿した前の質問のフォローアップです。

基本的に、私はjavascriptを介してTwitterのoauthリソースにリクエストを送信する方法を実装しようとしています。Django-social-authを使用してユーザーをTiwtterに登録するDjangoアプリケーションを実行しているサーバーがあります。承認を取得した後、ユーザーにaccess_tokenとoauth_token_secretを取得します。

クライアント側には、サーバーを呼び出して適切なヘッダーを計算するjavascriptアプリケーションがあります。これは、pythonoauth2を使用して行います。これを行うコードは次のとおりです。

url = request.POST['url']

params = {
    'oauth_version': "1.0",
    'oauth_nonce': oauth.generate_nonce(),
    'oauth_timestamp': int(time.time()),
    }

at = social.extra_data['access_token'].split('&oauth_token=')[1]
ats = social.extra_data['access_token'].split('&oauth_token=')[0].split('oauth_token_secret=')[1]

token = oauth.Token(key=at, secret=ats)
consumer = oauth.Consumer(key=settings.TWITTER_CONSUMER_KEY, secret=settings.TWITTER_CONSUMER_SECRET)

params['oauth_token'] = token.key
params['oauth_consumer_key'] = consumer.key

req = oauth.Request(method="GET", url=url, parameters=params)

signature_method = oauth.SignatureMethod_HMAC_SHA1()
req.sign_request(signature_method, consumer, token)

次に、このリクエストパラメータは、次のパラメータを使用してTwitterへの呼び出しを行うクライアントに送信されます。

$.ajax({
    url: "https://api.twitter.com/1/statuses/home_timeline.json",
    data: parameters,
    dataType: 'jsonp',
    success: function(twitter_data) {
    console.log('twitter_data = ', twdata);
    },
    error: function(jqXHR, textStatus, errorThrown) {
    console.log('err = ', textStatus);
    console.log('err = ', errorThrown);
    }
});

これは、次のようなリソースのリクエストを生成します。

https://api.twitter.com/1/statuses/home_timeline.json?callback=jQuery17107030615725088865_1341786299930&oauth_nonce=15094349&oauth_timestamp=1341785696&oauth_consumer_key=[OAUTH_CONSUMER_KEY HERE]&oauth_signature_method=HMAC-SHA1&oauth_version=1.0&oauth_token=[OAUTH_TOKEN HERE]0&oauth_signature=pQwHlKmepgtym%2Ffj%2BupCGP8mv3s%3D&page=2&include_entities=true&_=1341786306712

それでも、401Unauthorizedエラーが発生します。私はコードを3回チェックしたので、何かが足りないのではないかと思っていますか?

ありがとう。

4

1 に答える 1

0

認証が必要なリクエストの場合Authorization、POST パラメータではなく、 という HTTP ヘッダーに認証パラメータを配置する必要があります。Twitter API ドキュメント ( https://dev.twitter.com/docs/auth/authorizing-request ) で説明されています。

于 2012-07-09T02:29:23.507 に答える