使用twitter tastypie python social auth返回403进行身份验证

时间:2014-05-15 09:27:54

标签: twitter tastypie python-social-auth

我使用tastypie和python-social-auth管理我的社交认证。 通过执行以下操作,我通过Facebook进行身份验证没有问题:

from social.apps.django_app import load_strategy
provider = “facebook”
access_token = “CAAIkpON595IBADC8CqXgq615wfsls15u6RI23sreqbzntau”
strategy = load_strategy(backend=provider)   
user = strategy.backend.do_auth(access_token)

但是当我尝试使用provider =" twitter"和一个有效的访问令牌,我在调用' do_auth'方法。 我设法cURL到twitter api,所以我的凭证是有效的。

我错过了任何步骤吗? Twitter认证应该与facebook的不同?

谢谢!

2 个答案:

答案 0 :(得分:0)

问题是我没有添加' redirect_uri'何时定义了'load_strategy'。 最后我最终得到了这段代码:

# setup redirect uri in order to load strategy
    uri = redirect_uri = "social:complete"
    if uri and not uri.startswith('/'):
        uri = reverse(redirect_uri, args=(backend,))

    # load the strategy
    try:
        strategy = load_strategy(
            request=request, backend=backend,
            redirect_uri=uri, **kwargs
        )
    except MissingBackend:
        raise Http404('Backend not found')

感谢@omab在github问题页面中对此进行评论。

答案 1 :(得分:0)

我在register_by_access_token方法中遵循这些示例(我使用django作为Angular应用程序的API)。

在示例中,行:

user = request.backend.do_auth(access_token)

没有与twitter一起使用Twitter收到的oauth_token,为了让它工作,我必须创建以下access_token:

access_token = {
              'oauth_token': auth[1],
              'oauth_token_secret': auth[2]
        }

其中auth [1]和[2]是twitter返回的值。

它很奇怪,因为我没有在任何地方找到这个记录,我发现那些错过了social_AUTH_TWITTER_KEY和SOCIAL_AUTH_TWITTER_SECRET的人会让它发挥作用。

fyi:我用django rest framework