def get_weibo_user():
    auth = OAuthHandler(consumer_key, consumer_secret)
    # Get currrent user access token from session
    access_token = session['oauth_access_token']
    auth.setToken(access_token.key, access_token.secret)
    api = API(auth)
    # Get info from weibo
    return api.me()
示例#2
0
def get_api():
    import sys, os.path
    sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
    from weibopy import OAuthHandler, API, WeibopError
    c = get_conf()
    try:
        o = OAuthHandler(c['consumer_key'], c['consumer_secret'])
        o.setToken(c['access_token_key'], c['access_token_secret'])
    except KeyError, e:
        sys.stderr.write("you should run get_oauthed.py first.\n")
def login():
    session['login_ok_url'] = get_referer()
    callback = 'http://appstack.sinaapp.com/login_callback'

    auth = OAuthHandler(consumer_key, consumer_secret, callback)
    # Get request token and login url from the provider
    url = auth.get_authorization_url()
    session['oauth_request_token'] = auth.request_token
    # Redirect user to login
    return redirect(url)
def login_callback():
    # This is called by the provider when user has granted permission to your app
    verifier = request.args.get('oauth_verifier', None)
    auth = OAuthHandler(consumer_key, consumer_secret)
    request_token = session['oauth_request_token']
    del session['oauth_request_token']

    # Show the provider it's us really
    auth.set_request_token(request_token.key, request_token.secret)
    # Ask for a temporary access token
    session['oauth_access_token'] = auth.get_access_token(verifier)
    return redirect(session.get('login_ok_url', '/'))
示例#5
0
def login_with_sinaid(request):
    callback = request.build_absolute_uri('/check_user_login_sina')
    auth = OAuthHandler(consumer_key=consumer_key,
                        consumer_secret=consumer_secret,
                        callback=callback)
    try:
        authorization_url = auth.get_authorization_url()
    except WeibopError:
        request.session['errormessage'] = ugettext(
            'Connect sina twitter fail, please retry')
        return login(request)

    request_token = auth.request_token
    request.session['oauth_request_token'] = request_token
    return HttpResponseRedirect(authorization_url)
示例#6
0
def check_user_login_sina(request):
    try:
        oauth_verifier = request.GET.get('oauth_verifier', None)
        request_token = request.session.get('oauth_request_token', None)
        request.session['oauth_request_token'] = None

        auth = OAuthHandler(consumer_key, consumer_secret)

        auth.request_token = request_token
        access_token = auth.get_access_token(oauth_verifier)

        request.session['oauth_access_token'] = access_token

        api = API(auth)
        sina_user = api.me()

        user_in_session = request.session.get('user', None)
        isnewuser = False
        if user_in_session == None:
            user, isnewuser = UserService().getorCreateCoolUserBySinaUser(
                sina_user)
            user = UserService().getUser(user)
        else:
            errormessage = UserService().updateSinaID(user_in_session,
                                                      sina_user)
            if errormessage:
                request.session['errormessage'] = errormessage
            user = UserService().getUser(user_in_session)

        request.session['user'] = user
        newmessagecount = UserService().getMessageCount({'isread': False},
                                                        user)
        user.newmessagecount = newmessagecount
        UserService().updateCoolUser(user)

        if isnewuser:
            back_to_url = '/setting'
        else:
            back_to_url = request.session.get('login_back_to_url', '/')

        return HttpResponseRedirect(back_to_url)
    except WeibopError:
        errormessage = ugettext(
            'Auth sina twitter account failed, please retry.')
        request.session['errormessage'] = errormessage
        return login(request)
示例#7
0
def main():
    c = get_conf()
    o = OAuthHandler(c['consumer_key'], c['consumer_secret'])
    c['authorization_url'] = o.get_authorization_url()
    c['request_token'] = o.request_token
    print c['authorization_url']
    verifier = raw_input('click the url above, then input the verifier: ')
    verifier = verifier.strip()
    c['verifier'] = verifier
    try:
        access_token = o.get_access_token(verifier)
        c['access_token_key'] = access_token.key
        c['access_token_secret'] = access_token.secret
        c['access_token'] = access_token.to_string()
        set_conf(c)
        print 'oauth succeeded'
    except:
        print 'oauth failed'
示例#8
0
    def __init__(self, *argc, **argkw):
        super(BaseHandler, self).__init__(*argc, **argkw)
        self.path = ''
        self.session = session.TornadoSession(self.application.session_manager,
                                              self)

        if self.session.get('platform') == 'weibo':
            self.sina_access_token = self.session.get('oauth_access_token')
            auth = OAuthHandler(options.SINA_APP_KEY, options.SINA_APP_SECRET)
            auth.set_access_token(self.sina_access_token.key,
                                  self.sina_access_token.secret)
            self.sina_api = API(auth)
        elif self.session.get('platform') == 'renren':
            self._userid = int(self.get_user_id())
            print "renren ok"
        elif self.session.get('platform') == 'douban':
            self._userid = int(self.get_user_id())
            print "douban ok"