2014-05-15 188 views
0

我使用tastypie和python-social-auth管理我的社交身份验证。 我没有问题,这样做通过Facebook认证如下:使用twitter进行身份验证tastypie python社交身份验证返回403

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) 

但是当我尝试做相同的提供商=“推特”和有效的访问令牌,我一直呼吁的“do_auth”当得到403方法。 我设法卷曲到twitter api,所以我的凭据是有效的。

我错过了在这方面的任何步骤?叽叽喳喳验证应该是不同的Facebook的?

谢谢!

+0

你检查redirect_uri属性吗?还要检查错误代码的响应情况。应该有一些额外的信息来解释什么是错的。 – daniula

+0

这个过程现在不适用于Twitter,有一个问题可以在https://github.com/omab/python-social-auth/issues/272进行跟踪,我需要设置一个时间来处理它。 – omab

回答

0

问题是我没有在定义'load_strategy'时添加'redirect_uri'。 最后我结束了这段代码:

# 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的问题页面评论这一点。

0

我正在使用register_by_access_token方法(我使用django作为Angular应用程序的API)的示例。

在这个例子中,该行:

user = request.backend.do_auth(access_token) 

没有与由Twitter收到的oauth_token Twitter的工作,得到它的工作我必须创建以下的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休息框架

相关问题