vgarvardt / django-loginza

Django application for Loginza service
http://loginza.ru
38 stars 17 forks source link

Как получить например аватар с вконтакте или фейсбука #13

Closed ram0973 closed 12 years ago

ram0973 commented 13 years ago

Надо писать что-то дополнительно?

saippuakauppias commented 13 years ago

Да, безусловно надо. Вот тут http://loginza.ru/json-user-profile можете подробнее узнать что возвращает Loginza после своей работы.

vgarvardt commented 13 years ago

Если авторизация логинзы на фейсбуке или вконтакте возвращает аватары, то найти их можно в модели Identity в поле data, где все возвращенные данные хранятся сериализванные в JSON

gsvster commented 12 years ago

сохраняет аву в django-avatar. А просто получить - то линк в data

def loginza_auth_handler(sender, user, identity, **kwargs):
    try:
        map = loginza_models.UserMap.objects.get(user=user)
        data = json.loads(map.identity.data)
        system_user = User.objects.get(username=user)

        if data['provider'] == "http://www.facebook.com/":
            if data['photo']:
                try:
                    Avatar.objects.get(user=system_user)
                except:
                    (filename, headers) = urllib.urlretrieve(data['photo'])
                    img_name = '%s.jpg' % os.path.basename(filename)
                    copy_path = os.path.join(settings.MEDIA_ROOT, settings.AVATAR_STORAGE_DIR, system_user.username, img_name)
                    copy_dir = os.path.join(settings.MEDIA_ROOT, settings.AVATAR_STORAGE_DIR, system_user.username)
                    if not os.path.isdir(copy_path):
                        os.makedirs(copy_dir)
                    shutil.copy2(filename, copy_path)
                    path_ava = os.path.join(settings.AVATAR_STORAGE_DIR, system_user.username, img_name)

                    avatar = Avatar(
                        user = system_user,
                        primary = True,
                        avatar = path_ava,
                    )
                    avatar.save()

    auth.login(sender, user)

    except loginza_models.UserMap.DoesNotExist:
    sender.session['users_complete_reg_id'] = identity.id
    return redirect(reverse('users.views.complete_registration'))

signals.authenticated.connect(loginza_auth_handler)
ram0973 commented 12 years ago

Спасибо огромное