Beispiel #1
0
def api_twitter_connect_by_token(request):
    ret = None
    if request.method == 'POST':
        try:
            adapter = TwitterOAuthAdapter()
            app = adapter.get_provider().get_app(request)
            access_token = request.POST.get('access_token')
            access_token_secret = request.POST.get('access_token_secret')
            token = SocialToken(app=app, token=access_token)
            login = twitter_complete_login(request, app, access_token, access_token_secret)

            login.token = token
            login.state = SocialLogin.state_from_request(request)
            ret = complete_social_login(request, login)
        except Exception as e:
            # FIXME: Catch only what is needed
            pass

    if not ret:
        raise Http404

    profile = Profile.objects.get_or_create(user=request.user)[0]
    profile.avatar_url = login.account.get_avatar_url()
    profile.save()
    user_source = UserResource()
    bundle = user_source.build_bundle(obj=request.user, request=request)
    bundle = user_source.full_dehydrate(bundle)
    bundle = user_source.alter_detail_data_to_serialize(request, bundle)
    return user_source.create_response(request, bundle)
Beispiel #2
0
def api_facebook_connect_by_token(request):
    ret = None
    if request.method == 'POST':
        form = FacebookConnectForm(request.POST)
        if form.is_valid():
            try:
                app = providers.registry.by_id(FacebookProvider.id)\
                .get_app(request)
                access_token = form.cleaned_data['access_token']
                token = SocialToken(app=app,
                    token=access_token)
                login = fb_complete_login(app, token)
                login.token = token
                login.state = SocialLogin.state_from_request(request)
                ret = complete_social_login(request, login)
            except:
                # FIXME: Catch only what is needed
                pass
    if not ret:
        raise Http404

    profile = Profile.objects.get_or_create(user=request.user)[0]
    profile.avatar_url = login.account.get_avatar_url()
    profile.save()
    user_source = UserResource()
    bundle = user_source.build_bundle(obj=request.user, request=request)
    bundle = user_source.full_dehydrate(bundle)
    bundle = user_source.alter_detail_data_to_serialize(request, bundle)
    return user_source.create_response(request, bundle)