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 回答