コード例 #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.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))
コード例 #2
0
ファイル: views.py プロジェクト: pwash1021/PMONEY
def twitter(request):
    """
    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()

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

    if user is None:
        profile = TwitterProfile(twitter_id=user_info['id'], )
        user = User()
        request.session['socialregistration_profile'] = profile
        request.session['socialregistration_user'] = user
        request.session['next'] = _get_next(request)
        return HttpResponseRedirect(reverse('socialregistration_setup'))

    login(request, user)

    return HttpResponseRedirect(_get_next(request))
コード例 #3
0
def twitter(
        request,
        account_inactive_template='socialregistration/account_inactive.html',
        extra_context=dict(),
        client_class=None):
    """
    Actually setup/login an account relating to a twitter user after the oauth
    process is finished successfully
    """
    client = client_class(
        request,
        settings.TWITTER_CONSUMER_KEY,
        settings.TWITTER_CONSUMER_SECRET_KEY,
        settings.TWITTER_REQUEST_TOKEN_URL,
    )
    try:
        user_info = client.get_user_info()
    except 1:
        return render_to_response(account_inactive_template,
                                  extra_context,
                                  context_instance=RequestContext(request))

    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.objects.create(
                user=request.user,
                twitter_id=user_info['id'],
                username=user_info['screen_name'])
            _connect(request.user, profile, client)

        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'])
        user = User()
        request.session['socialregistration_profile'] = profile
        request.session['socialregistration_user'] = user
        # Client is not pickleable with the request on it
        client.request = None
        request.session['socialregistration_client'] = client
        request.session['socialregistration_info'] = user_info
        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, TwitterProfile.objects.get(user=user), client)

    return HttpResponseRedirect(_get_next(request))
コード例 #4
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()

    try:
        oauth_token = request.session['oauth_api.twitter.com_access_token'][
            'oauth_token']
    except KeyError:
        try:
            oauth_token = request.session['oauth_twitter.com_access_token'][
                'oauth_token']
        except:
            oauth_token = ''
    try:
        oauth_token_secret = request.session[
            'oauth_api.twitter.com_access_token']['oauth_token_secret']
    except KeyError:
        try:
            oauth_token_secret = request.session[
                'oauth_twitter.com_access_token']['oauth_token_secret']
        except:
            oauth_token_secret = ''

    if 'socialregistration_connect_object' in request.session and request.session[
            'socialregistration_connect_object'] != None:
        # this exists so that social credentials can be attached to any arbitrary object using the same callbacks.
        # Under normal circumstances it will not be used. Put an object in request.session named 'socialregistration_connect_object' and it will be used instead.
        # After the connection is made it will redirect to request.session value 'socialregistration_connect_redirect' or settings.LOGIN_REDIRECT_URL or /
        try:
            # get the profile for this Twitter ID and type of connected object
            profile = TwitterProfile.objects.get(
                twitter_id=user_info['id'],
                content_type=ContentType.objects.get_for_model(
                    request.session['socialregistration_connect_object'].
                    __class__),
                object_id=request.session['socialregistration_connect_object'].
                pk)
        except TwitterProfile.DoesNotExist:
            TwitterProfile.objects.create(content_object=request.session['socialregistration_connect_object'], twitter_id=user_info['id'], \
                screenname=user_info['screen_name'], consumer_key=oauth_token, consumer_secret=oauth_token_secret)

        del request.session['socialregistration_connect_object']
    else:
        if request.user.is_authenticated():
            # Handling already logged in users connecting their accounts
            try:
                profile = TwitterProfile.objects.get(
                    twitter_id=user_info['id'],
                    content_type=ContentType.objects.get_for_model(User))
            except TwitterProfile.DoesNotExist:  # There can only be one profile!
                profile = TwitterProfile.objects.create(
                    content_object=request.user,
                    twitter_id=user_info['id'],
                    screenname=user_info['screen_name'],
                    consumer_key=oauth_token,
                    consumer_secret=oauth_token_secret)

            return HttpResponseRedirect(_get_next(request))

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

        if user is None:
            request.session['socialregistration_profile'] = TwitterProfile(
                twitter_id=user_info['id'],
                screenname=user_info['screen_name'],
                consumer_key=oauth_token,
                consumer_secret=oauth_token_secret)
            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))