예제 #1
0
파일: views.py 프로젝트: wvega/dnoteptb
def ready(request, action=''):
    if 'oauth_verifier' not in request.REQUEST:
        return HttpResponseRedirect('/error')

    client = TwitterOAuthClient(request)
    token = OAuthRequestToken.all().filter('token', request.REQUEST['oauth_token']).get().OAuthToken()
    verifier = request.REQUEST['oauth_verifier']

    # get access token
    oauth_request = OAuthRequest.from_consumer_and_token(consumer, token=token, verifier=verifier, http_url=client.access_token_url)
    oauth_request.sign_request(OAuthSignatureMethod_HMAC_SHA1(), consumer, token)
    (token, response) = client.fetch_access_token(oauth_request)

    # get user credentials
    params = cgi.parse_qs(response.content, keep_blank_values=False)
    userid = int(params['user_id'][0])

    user = User.all().filter('userid', userid).get()
    if user is None:
        user = User(username=params['screen_name'][0], userid=userid, token=token.key, secret=token.secret)
    else:
        user.token = token.key
        user.secret = token.secret
    user.put()

    request.session['token'] = token.key

    return HttpResponseRedirect('/%s' % action)
예제 #2
0
파일: views.py 프로젝트: wvega/dnoteptb
def login(request, action=''):
    user = User.all().filter('token', request.session.get('token', None)).get()
    if user is not None:
        return HttpResponseRedirect('/')
    client = TwitterOAuthClient(request)

    # get request token
    oauth_request = OAuthRequest.from_consumer_and_token(consumer, callback='%s%s' % (CALLBACK_URL, action), http_url=client.request_token_url)
    oauth_request.sign_request(OAuthSignatureMethod_HMAC_SHA1(), consumer, None)
    token = client.fetch_request_token(oauth_request)

    # save request token
    OAuthRequestToken.save(token)

    # authorize request token
    oauth_request = OAuthRequest.from_token_and_callback(token=token, http_url=client.authorization_url)
    return client.authorize_token(oauth_request)