コード例 #1
0
def twitter(request, account_inactive_template='socialregistration/account_inactive.html',
    extra_context=dict()):
    """
    Actually setup/login an account relating to a twitter user after the oauth
    process is finished successfully
    """
    client = OAuthTwitter(
        request, settings.TWITTER_CONSUMER_KEY,
        settings.TWITTER_CONSUMER_SECRET_KEY,
        settings.TWITTER_REQUEST_TOKEN_URL,
    )

    user_info = client.get_user_info()

    if request.user.is_authenticated():
        # Handling already logged in users connecting their accounts
        try:
            profile = TwitterProfile.objects.get(twitter_id=user_info['id'])
        except TwitterProfile.DoesNotExist: # There can only be one profile!
            profile = TwitterProfile(user=request.user, twitter_id=user_info['id'])

        profile.access_token = client._get_at_from_session()['oauth_token']
        profile.token_secret = client._get_at_from_session()['oauth_token_secret']
        profile.nick = client._get_at_from_session()['screen_name']
        print profile, profile.access_token, profile.token_secret, profile.nick
        profile.save()

        return HttpResponseRedirect(_get_next(request))

    user = authenticate(twitter_id=user_info['id'])

    if user is None:
        profile = TwitterProfile(twitter_id=user_info['id'])
        profile.access_token = client._get_at_from_session()['oauth_token']
        profile.token_secret = client._get_at_from_session()['oauth_token_secret']
        profile.nick = client._get_at_from_session()['screen_name']
        user = User()
        request.session['socialregistration_profile'] = profile
        request.session['socialregistration_user'] = user
        request.session['next'] = _get_next(request)
        return HttpResponseRedirect(reverse('socialregistration_setup'))
    else:
        profile = TwitterProfile.objects.get(user=user, twitter_id=user_info['id'])
        profile.access_token = client._get_at_from_session()['oauth_token']
        profile.token_secret = client._get_at_from_session()['oauth_token_secret']
        profile.nick = client._get_at_from_session()['screen_name']
        profile.save()


    if not user.is_active:
        return render_to_response(
            account_inactive_template,
            extra_context,
            context_instance=RequestContext(request)
        )

    login(request, user)

    return HttpResponseRedirect(_get_next(request))
コード例 #2
0
def twitter(request, account_inactive_template='socialregistration/account_inactive.html', extra_context=dict()):
    """
    Actually setup/login an account relating to a twitter user after the oauth
    process is finished successfully
    """
    client = OAuthTwitter(
        request, settings.TWITTER_CONSUMER_KEY,
        settings.TWITTER_CONSUMER_SECRET_KEY,
        settings.TWITTER_REQUEST_TOKEN_URL,
    )

    user_info = client.get_user_info()

    if request.user.is_authenticated():
        # Handling already logged in users connecting their accounts
        try:
            profile = TwitterProfile.all().filter('twitter_id = ',user_info['id']).fetch(1)[0]
        except IndexError: # There can only be one profile!
            profile = TwitterProfile(user=request.user, 
                twitter_id=user_info['id'], 
                username=user_info['screen_name'], 
                real_name=user_info['name'],
                pic_url = user_info['profile_image_url'],
            )
            profile.save()

        return HttpResponseRedirect(_get_next(request))

    user = authenticate(twitter_id=user_info['id'])

    if user is None:
        profile = TwitterProfile(                
            twitter_id=user_info['id'], 
            username=user_info['screen_name'], 
            real_name=user_info['name'],
            pic_url = user_info['profile_image_url'],
        )

        user = User(username=profile.real_name)
        request.session['social_suggested_username'] = user_info['screen_name']
        request.session['socialregistration_profile'] = profile
        request.session['socialregistration_user'] = user
        request.session['next'] = _get_next(request)
        return HttpResponseRedirect(reverse('socialregistration_setup'))

    if not user.is_active:
        return render_to_response(
            account_inactive_template,
            extra_context,
            context_instance=RequestContext(request)
        )

    login(request, user)

    return HttpResponseRedirect(_get_next(request))