2012-06-27 29 views
5

Zacząłem używać https://github.com/omab/django-social-auth i udało mi się zalogować przez Twitter, Google i Facebook.django-social-auth: połączenie z powodzeniem, jak zapytać o użytkowników teraz?

Potrzebne

muszę zapytać o zalogowanego użytkownika, aby zrobić więcej rzeczy, które będę model używając do tego?

nie widzę żadnych przykładów tego

Dziękuję

Aktualizacja

@Omab, ja nie rozumiem, jak to będzie działać, czy możesz pomóc. Kiedy Logowanie z Twitter, wywołanie zwrotne idzie następujący kod

@login_required 
def done(request): 
    """Login complete view, displays user data""" 
    ctx = { 
     'version': version, 
     'last_login': request.session.get('social_auth_last_login_backend') 
    } 
    logging.warn('context - ' + str(ctx)) 
    logging.warn('request - ' + str(request)) 
    return render_to_response('home.html', ctx, RequestContext(request)) 

Czy możesz mi powiedzieć w jaki sposób mogę uzyskać dostęp do instancji użytkownika tutaj?

Dziękuję

Odpowiedz

6

sklepach App szczegóły społeczne konto za pomocą modelu UserSocialAuth, aby pobrać dowolną instancję prostu zrobić:

user.social_auth.filter(provider="...") 

Gdzie:

  • user jest instancją User (request.user dla bieżącego zalogowanego użytkownika)
  • provider to ciąg z nazwą operatora (facebook, twitter, etc)

Instancja UserSocialAuth przechowuje potrzebne znaki zadzwonić potrzebne API:

print user_social_auth.tokens 
{...} 
+0

I uaktualniony kod, wciąż nie jasno, czy możesz pomóc? – daydreamer

+0

Hi @omab, czy możesz pomóc w tym. Wciąż nic nie dostaję, zaktualizowałem kod również – daydreamer

+1

@daydreamer, w widoku można uzyskać dostęp do instancji użytkownika wykonując 'request.user'. Jeśli jest zalogowany, instancja odpowie "True", wywołując 'request.user.is_authenticated()'. – omab

1

Jak sugeruje K-man, ty można spróbować (Identifying the backend provider of a logged in user):

request.user.social_auth.values_list('provider') 

inne wartości, które można znaleźć w values_list obejmują: id, uid (np. Facebook User ID), użytkownik, extra_data (który zawiera access_token)