0

私は、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」メソッドを呼び出すと 403 が返されます。なんとか Twitter API に cURL できたので、資格情報は有効です。

途中で手順がありませんか?Twitterの認証はFacebookの認証とは異なるべきですか?

ありがとう!

4

2 に答える 2

0

register_by_access_token メソッドで例に従っていました (Angular アプリの API として django を使用しています)。

例では、次の行:

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 rest フレームワークで使用しています

于 2015-06-16T16:34:05.753 に答える
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')

githubの問題ページでこれにコメントしてくれた@omabに感謝します。

于 2014-05-22T11:55:25.343 に答える