4

これは先週うまくいきました。たぶん、私は何か間違ったことをして、どこかでそれを台無しにしてしまったのかもしれません。あるいは、それはバグかもしれません。あるいは、単なる更新であり、ドキュメントを読んでいる間にそれを見逃したのかもしれません。

ユーザーのアバターを取得して URL を保存するパイプラインがあります。

def get_avatar(strategy, details, response, user, *args, **kwargs):
    url = None
    if strategy.backend.name == 'facebook':
        url = 'http://graph.facebook.com/{0}/picture'.format(response['id'])
    elif strategy.backend.name == "twitter":
        if response['profile_image_url'] != '':
            url = response['profile_image_url']
    elif strategy.backend.name == "google-oauth2":
        if response['image'].get('url') is not None:
            url = response['image'].get('url')

以前は機能していましたが、今ではエラーが表示されます:

 'DjangoStrategy' object has no attribute 'backend'

助けてください。一部のベータ ユーザーは既に私の Web サイトを使用しており、現時点ではプロフィール画像を持っていません。

4

2 に答える 2

0

わかりましたので、誰かが同じ問題を抱えている場合に備えて、見つけた解決策を投稿します。これが最善の方法かどうかはわかりませんが、うまくいきます:

    if "facebook" in kwargs['backend'].redirect_uri:
        url = 'http://graph.facebook.com/{0}/picture'.format(response['id'])
    elif "twitter" in kwargs['backend'].redirect_uri:
        if response['profile_image_url'] != '':
            url = response['profile_image_url']
    elif "google" in kwargs['backend'].redirect_uri:
        if response['image'].get('url') is not None:
            url = response['image'].get('url')

他のソリューションは大歓迎です。

于 2014-09-17T20:04:50.470 に答える