Example #1
0
def access_resource(request, service=None, method=None, category=None, resource=None):
    """AJAX view to request a resource from twitter and return it."""
    if service == "twitter":
        # Retrieve the token and secret from the session or from the user
        oauth_token = None
        oauth_token_secret = None
        session_access_token = request.session.get("twitter_access_token", None)
        if session_access_token:
            oauth_token = session_access_token["oauth_token"]
            oauth_token_secret = session_access_token["oauth_token_secret"]
        else:
            profile = request.user.get_profile()
            if profile:
                oauth_token = profile.twitter_token
                oauth_token_secret = profile.twitter_token_secret

        # If no token/secret, then oopsies
        if not oauth_token or not oauth_token_secret:
            raise Http404

        # Query for the resource
        oauth = TwitterOAuth(oauth_token, oauth_token_secret)
        return oauth.access_resource(category, resource, request.GET, method)

    raise Http404
Example #2
0
def callback(request, service=None):
    """Callback for Facebook and Twitter OAuth."""
    if service == "facebook":
        return render_to_response("social/facebook_callback.html")

    elif service == "twitter":
        oauth_token = request.GET.get("oauth_token", None)
        oauth_verifier = request.GET.get("oauth_verifier", None)
        if not oauth_token or not oauth_verifier:
            # F****d
            messages.error(request, "Invalid OAuth callback. Please try again.")
            return render_to_response("social/twitter_callback.html", {"user": None})

        oauth = TwitterOAuth()
        try:
            access_token = oauth.get_access_token(oauth_token, oauth_verifier)
        except ServiceError:
            # F****d
            messages.error(request, "Invalid OAuth callback. Please try again.")
            return render_to_response("social/twitter_callback.html", {"user": None})

        # Score! Store the token on the session
        request.session["twitter_access_token"] = access_token
        return render_to_response(
            "social/twitter_callback.html",
            {"user": {"username": access_token["screen_name"], "user_id": access_token["user_id"]}},
        )

    raise Http404
Example #3
0
def authorize_url(request, service=None):
    """AJAX view to get an authorize url from twitter and return it."""
    callback_url = request.GET.get("callback_url", reverse("pony.social.views.callback", kwargs={"service": "twitter"}))
    oauth = TwitterOAuth()
    oauth.get_request_token(callback_url=callback_url)
    authorize_url = oauth.get_authorize_url()
    return {"authorize_url": authorize_url}