4

Twython 2.3.4にアップデートしたばかりですが、Twitter認証が機能しなくなりました。'auth_props = twitter.get_authentication_tokens()'行で失敗します。何が悪かったのか分かりますか?前もって感謝します!

Twythonを使用してTwitter認証を行うためのPythonコードは次のとおりです。

def begin_auth(request):
    twitter = Twython(
        twitter_token = TWITTER_KEY,
        twitter_secret = TWITTER_SECRET,
        callback_url = request.build_absolute_uri(reverse('portnoy.views.thanks'))
    )
    # Request an authorization url to send the user to...
    auth_props = twitter.get_authentication_tokens()

上記の行に次のエラーがあります:TwythonAuthError: "OAuthジャンクで何かを検証できなかったようです。エラー:401、メッセージ:oauth署名とトークンの検証に失敗しました"

    # Then send them over there, durh.
    request.session['request_token'] = auth_props
    return HttpResponseRedirect(auth_props['auth_url'])

def thanks(request, redirect_url='/'):
    c = RequestContext(request)
    # for permanent ones and store them...
    twitter = Twython(
        twitter_token = TWITTER_KEY,
        twitter_secret = TWITTER_SECRET,
        oauth_token = request.session['request_token']['oauth_token'],
        oauth_token_secret = request.session['request_token']['oauth_token_secret']
     )

    # Retrieve the tokens we want...
    authorized_tokens = twitter.get_authorized_tokens()
    request.session['request_tokens'] = authorized_tokens
    debug('thanks', request.session['request_tokens'])

    user = User.objects.filter(username=authorized_tokens['screen_name'])
    if user.exists():
        user = user[0]
        user.backend='django.contrib.auth.backends.ModelBackend'     
        auth.login(request,user)
    else:
        return render_to_response('twitter_register.html', c)   
    return HttpResponseRedirect(redirect_url)
4

2 に答える 2

2

私はTwythonの作者です。

内部で実行しているリクエストのバージョンは何ですか?最近、アップストリームのバグが原因で、人々がさまざまなOAuth関連のエラーに遭遇し続けるという問題がありました。それがそれに関連しているかどうか興味があります...

于 2012-08-30T20:37:42.187 に答える
1

私も同じ問題に遭遇しました。ローカルでテストしている場合は機能しないようです。

これを修正するために私がしたことは次のとおりです。

  1. ホストファイルを編集します(OSXでは/ private / etc / hostsにあります)。次の行を追加します:127.0.0.1 myapp.com
  2. Twitterアプリの設定に移動し、[設定]タブをクリックします。コールバックURLを次のように設定します:http: //myapp.com :8000 / thanks

ポート番号とURLが正しく設定されていることを確認してください。お役に立てば幸いです。

于 2012-10-17T15:23:42.127 に答える