0

我正在使用 sweetpie 和 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' 方法时不断收到 403。我设法卷曲到 twitter api,所以我的凭据是有效的。

我错过了任何步骤吗?twitter 的身份验证应该与 facebook 的不同吗?

谢谢!

4

2 回答 2

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 问题页面中对此发表评论。

于 2014-05-22T11:55:25.343 回答
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 的人可以正常工作。

仅供参考:我将它与 django rest 框架一起使用

于 2015-06-16T16:34:05.753 回答