예제 #1
0
    def get(self):
        invitationCode = self.request.get('invitation_code')
        if not self.isValidInvitationCode(invitationCode):
            error_output(self, "<html><body>邀请码无效</body></html>", "text/html",
                         400)
            return
        auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)

        verifier = self.request.get("oauth_verifier").strip()
        twitterId = self.request.get("twitter_id").strip()
        if verifier == "" or twitterId == "":
            authUrl = auth.get_authorization_url()
            success_output(self, page_goto_sina_oauth % \
                {'url':authUrl,
                 'invitation':invitationCode.encode('UTF-8'),
                 'token':auth.request_token.key,
                 'secret':auth.request_token.secret})
        else:
            request_token = self.request.get("request_token")
            request_secret = self.request.get("request_secret")
            auth.set_request_token(request_token, request_secret)
            accessToken = auth.get_access_token(verifier)
            binding = SyncBinding.getOrInsertByInvitationCode(invitationCode)
            binding.lastTweetId = None
            binding.twitterId = twitterId
            binding.sinaAccessToken = accessToken.key
            binding.sinaAccessSecret = accessToken.secret
            binding.put()
            success_output(
                self, '''
<html><body>
<p>Twitter与新浪微博同步绑定成功</p>
<p>如需要修改绑定,请重新访问邀请链接</p>
</body></html>
            ''')
예제 #2
0
    def get(self):
        invitationCode = self.request.get('invitation_code')
        if not self.isValidInvitationCode(invitationCode):
            error_output(self, "<html><body>邀请码无效</body></html>", "text/html", 400)
            return
        auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
        
        verifier = self.request.get("oauth_verifier").strip()
        twitterId = self.request.get("twitter_id").strip()
        if verifier == "" or twitterId == "":
            authUrl = auth.get_authorization_url()
            success_output(self, page_goto_sina_oauth % \
                {'url':authUrl, 
                 'invitation':invitationCode.encode('UTF-8'),
                 'token':auth.request_token.key, 
                 'secret':auth.request_token.secret})
        else:
            request_token = self.request.get("request_token")
            request_secret = self.request.get("request_secret")
            auth.set_request_token(request_token, request_secret)
            accessToken = auth.get_access_token(verifier)
            binding = SyncBinding.getOrInsertByInvitationCode(invitationCode)
            binding.lastTweetId = None
            binding.twitterId = twitterId
            binding.sinaAccessToken = accessToken.key
            binding.sinaAccessSecret = accessToken.secret
            binding.put()
            success_output(self, '''
<html><body>
<p>Twitter与新浪微博同步绑定成功</p>
<p>如需要修改绑定,请重新访问邀请链接</p>
</body></html>
            ''')
예제 #3
0
파일: sina.py 프로젝트: vincentwyshan/VGA
 def init_1st_step(self):
     auth = OAuthHandler(APP_KEY, APP_SECRET, '')
     auth_url = auth.get_authorization_url()
     user.update_app('sina', self.email, request_token=auth.request_token.key,
             request_secret=auth.request_token.secret)
     log.debug(repr(user.get(self.email)))
     return auth_url
예제 #4
0
    def GET(self):
        access_token=session.get('access_token',None)
        if not access_token:
            auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET,web.ctx.get('homedomain')+'/callback')
            auth_url = auth.get_authorization_url()
            session.request_token=auth.request_token
            web.seeother(auth_url)
        else:
            auth =OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
            auth.access_token=access_token
            api=API(auth)
            user=api.verify_credentials()
            user_timeline=user.timeline(count=10)

            print "current user is ",user.screen_name
            hot_list=get_hot_list()
            for user_tweet in user_timeline:
                try:
                    hot_list.append(tuple([user_tweet.user.screen_name,
                                            user_tweet.mid,
                                            user_tweet.text,
                                            user_tweet.source,
                                            user_tweet.created_at,
                                            None,
                                            None]))
                except AttributeError:
                    #no retweet_statues
                    continue
            return render.index(user.screen_name,user.id,hot_list)
예제 #5
0
def oauth_sina(request):
    auth = OAuthHandler(settings.SINA_CONSUMER_KEY,
                        settings.SINA_CONSUMER_SECRET,
                        "http://www.tingwo.cc" + "/p/oauth_sina_callback")
    auth_url = auth.get_authorization_url()
    request.session['oauth_sina_request_token'] = auth.request_token
    return HttpResponseRedirect(auth_url)
예제 #6
0
class WebOAuthHandler():
    def __init__(self):
        self.back_url = current_app.config['SERVER_PATH'] + 'oauth/callback'
        self.oauth = OAuthHandler(consumer_key, consumer_secret)

    def get_authorizate_url(self):
        return self.oauth.get_authorization_url(
        ) + '&oauth_callback=' + self.back_url
예제 #7
0
파일: app.py 프로젝트: SAEPython/Save2Weibo
def login():
    callback = 'http://so2weibo.sinaapp.com/login_callback'

    auth = OAuthHandler(APP_KEY, APP_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)
예제 #8
0
 def get(self):
     recordtoken = OauthInfo(states="openAccount",service="sina",emailaddr="*****@*****.**")
     recordtoken.put()
     auth = OAuthHandler(CONSUMER_KEY_SINA, CONSUMER_SECRET_SINA,self.call_back_url+"?UID="+str(recordtoken.key()))
     url = auth.get_authorization_url()
     recordtoken.states = "request_token_got"
     recordtoken.fromOauthToken(auth.request_token)
     recordtoken.put()
     self.redirect(url)
예제 #9
0
def login():
    callback = 'http://so2weibo.sinaapp.com/login_callback'

    auth = OAuthHandler(APP_KEY, APP_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)
예제 #10
0
def get_access_token(username, password):
    auth = OAuthHandler(APP_KEY, APP_SECRET)
    auth_url = auth.get_authorization_url()
    print "Auth URL: ",auth_url
    veri_obj = GetPIN(auth_url, username, password)   
    verifier = veri_obj.getPIN()
    print "VERIFIER: ",verifier
    if verifier==-1:
        raise Exception("Error Account")
    token = auth.get_access_token(verifier)
    return dict(parse_qsl(str(token)))
예제 #11
0
def get_access_token(username, password):
    auth = OAuthHandler(APP_KEY, APP_SECRET)
    auth_url = auth.get_authorization_url()
    print "Auth URL: ", auth_url
    veri_obj = GetPIN(auth_url, username, password)
    verifier = veri_obj.getPIN()
    print "VERIFIER: ", verifier
    if verifier == -1:
        raise Exception("Error Account")
    token = auth.get_access_token(verifier)
    return dict(parse_qsl(str(token)))
예제 #12
0
파일: run.py 프로젝트: HIT-Coder/SmartWall
class WeiboBackup(object):
    """
    新浪微博自动备份.
    """

    def __init__(self):
        self.hdl = OAuthHandler(config.APP_KEY, config.APP_SECRET)
        self.api = None
        self.writer = None
        self.token = {}
        self.auth()

    def auth(self):
        try:
            with open("../" + config.TOKEN_FILE) as f:
                self.token = pickle.load(f)
            self.hdl.setToken(self.token["key"], self.token["secret"])
            self.api = API(self.hdl)
        except Exception as e:
            print e

    def get_auth_url(self):
        return self.hdl.get_authorization_url()

    def get_data(self, screen_name, page):
        count = 200
        while True:
            try:
                res = self.api.user_timeline(screen_name=screen_name, count=count, page=page)
                if len(res) == 0:
                    return page
                else:
                    for status in res:
                        text = status.text
                        retweet = getattr(status, "retweeted_status", False)
                        if retweet:
                            text = text + "//" + retweet.text
                        text = text.encode("utf-8")
                        self.writer.append(text)
                page = page + 1
            except Exception as e:
                print e

    def backup(self, screen_name, filename=""):
        if filename:
            self.writer = Writer(filename)
        else:
            self.writer = []
        page, alert_num = 1, 0
        while alert_num < ALERT_MAX_TIMES:
            page = self.get_data(screen_name, page)
            alert_num += 1
        return self.writer
예제 #13
0
class SinaClient:
    def __init__(self, key, secret):
        self.auth=OAuthHandler(key,secret)

    def get_auth_url(self):
        return self.auth.get_authorization_url()

    def set_access_token(self,token):
        key,secret=token.split('|')
        self.auth.setToken(key,secret)
        self.api=API(self.auth)

    def get_access_token(self):
        token=self.auth.access_token
        return token.key+'|'+token.secret

    def set_request_token(self,token):
        key,secret=token.split('|')
        self.auth.request_token=oauth.OAuthToken(key,secret)

    def get_request_token(self):
        token=self.auth.request_token
        return token.key+'|'+token.secret

    def set_verifier(self,verifier):
        self.auth.get_access_token(verifier)
        self.api=API(self.auth)

    def send_msg(self,msg,coord=None):
        lat,long=self.get_lat_long(coord)
        msg=msg.encode('utf-8')
        status=self.api.update_status(status=msg,lat=lat,long=long)
        return status

    def send_pic(self,msg,pic,coord=None):
        lat,long=self.get_lat_long(coord)
        msg=msg.encode('utf-8')
        status=self.api.upload(pic,status=msg,lat=lat,long=long)
        
        return status

    def get_timeline(self):
        return self.request(SINA_USER_TIMELINE_URL)

    def get_lat_long(self,coord):
        if not coord:
          return (None,None)

        return map(lambda x:str(x),coord)

    def get_user(self):
        return self.api.verify_credentials()
예제 #14
0
def get_sina_token():      
    #申请应用时得到的App Key及密码  
    App_key = '3028524014'  
    App_secret = '660eb5d3feacc40d3bba28e0b9dcc50b'  
  
    #授权  
    auth_handler = OAuthHandler(App_key, App_secret)  
    auth_url = auth_handler.get_authorization_url()  
  
    print "Please open this url by your Browser:" + auth_url  
    verifier = raw_input('Please input PIN code get from above url: ').strip()  
      
    #得到token及密码  
    auth_handler.get_access_token(verifier)  
예제 #15
0
 def get(self):
     recordtoken = OauthInfo(states="openAccount",service="twitter",emailaddr="*****@*****.**")
     recordtoken.put()
     auth = OAuthHandler(CONSUMER_KEY_TWITTER, CONSUMER_SECRET_TWITTER,self.call_back_url+"?UID="+str(recordtoken.key()),True)
     auth.OAUTH_HOST = 'api.twitter.com'
     auth.OAUTH_ROOT = '/oauth/'
     try :
         url = auth.get_authorization_url()
         recordtoken.states = "request_token_got"
         recordtoken.fromOauthToken(auth.request_token)
         recordtoken.put()
         self.redirect(url)
     except Exception,error_message:
         self.response.out.write( error_message )
예제 #16
0
class Test(unittest.TestCase):
    
    consumer_key=''
    consumer_secret=''
    
    def __init__(self):
            """ constructor """
    
    def getAtt(self, key):
        try:
            return self.obj.__getattribute__(key)
        except Exception as e:
            print(e)
            return ''
        
    def auth(self):
        
        if len(self.consumer_key) == 0:
            print("Please set consumer_key£¡£¡£¡")
            return
        
        if len(self.consumer_key) == 0:
            print("Please set consumer_secret£¡£¡£¡")
            return
                
        self.auth = OAuthHandler(self.consumer_key, self.consumer_secret)
        auth_url = self.auth.get_authorization_url()
        print('Please authorize: ' + auth_url)
        verifier = input('PIN: ').strip()
        self.auth.get_access_token(verifier)
        self.api = API(self.auth)
        
    def setAccessToken(self, key, secret):
        self.auth = OAuthHandler(self.consumer_key, self.consumer_secret)
        self.auth.setAccessToken(key, secret)
        self.api = API(self.auth)
    
    def update(self, message):
        status = self.api.update_status(message)
        self.obj = status
        id = self.getAtt("id")
        text = self.getAtt("text")
        print("update,id="+ str(id) +",text="+ text)
        
    def destroy_status(self, id):
        status = self.api.destroy_status(id)
        self.obj = status
        id = self.getAtt("id")
        text = self.getAtt("text")
        print("update---"+ str(id) +":"+ text)
예제 #17
0
class Test(unittest.TestCase):

    consumer_key = ''
    consumer_secret = ''

    def __init__(self):
        """ constructor """

    def getAtt(self, key):
        try:
            return self.obj.__getattribute__(key)
        except Exception as e:
            print(e)
            return ''

    def auth(self):

        if len(self.consumer_key) == 0:
            print("Please set consumer_key£¡£¡£¡")
            return

        if len(self.consumer_key) == 0:
            print("Please set consumer_secret£¡£¡£¡")
            return

        self.auth = OAuthHandler(self.consumer_key, self.consumer_secret)
        auth_url = self.auth.get_authorization_url()
        print('Please authorize: ' + auth_url)
        verifier = input('PIN: ').strip()
        self.auth.get_access_token(verifier)
        self.api = API(self.auth)

    def setAccessToken(self, key, secret):
        self.auth = OAuthHandler(self.consumer_key, self.consumer_secret)
        self.auth.setAccessToken(key, secret)
        self.api = API(self.auth)

    def update(self, message):
        status = self.api.update_status(message)
        self.obj = status
        id = self.getAtt("id")
        text = self.getAtt("text")
        print("update,id=" + str(id) + ",text=" + text)

    def destroy_status(self, id):
        status = self.api.destroy_status(id)
        self.obj = status
        id = self.getAtt("id")
        text = self.getAtt("text")
        print("update---" + str(id) + ":" + text)
예제 #18
0
def do_auth():
    auth = OAuthHandler(APP_KEY, APP_SECRET, BACK_URL)
    auth_url = auth.get_authorization_url()
    request_token_key = auth.request_token.key
    request_token_secret = auth.request_token.secret
    auth.set_request_token(request_token_key, request_token_secret)
    webbrowser.open(auth_url)
    verifier = input("Verifier: ").strip()
    access_token = auth.get_access_token(verifier)
    ATK = access_token.key
    ATS = access_token.secret
    auth.setAccessToken(ATK, ATS)
    api = API(auth)
    user = api.verify_credentials()
    logging("[AUTH]: We are uing API from account: [uid = %s, name = %s]" % (user.id, user.screen_name))
    return api
예제 #19
0
 def sinaapp(self,app_key,app_secret):
         auth = OAuthHandler(app_key, app_secret)  ##认证
         auth_url = auth.get_authorization_url()    ##返回授权页面链接,用浏览器打开
         #webbrowser.open(auth_url)
         content = self._request(auth_url)[1].read()        
         soup=BeautifulSoup.BeautifulSoup(''.join(content))
         #print content
         pin=soup.span.string   #自动获取pin码
         #print 'Please authorize: ' + auth_url  ##输入获得的Pin码
         #verifier = raw_input('输入您在浏览器页面显示的PIN码: ').strip()
         auth.get_access_token(pin)
         api = API(auth)  #整合函数
         connent=raw_input('What are you want to say?')
         status = api.update_status(status=connent)#发布微博
         print "Send Successed"
         raw_input('Press enter to exit ......')
예제 #20
0
파일: user.py 프로젝트: yimiqisan/xiha
 def get(self):
     print '123123123'
     verifier = self.get_argument('oauth_verifier', None)
     auth = OAuthHandler(SINA_CONSUME_KEY, SINA_CONSUME_SECRET)
     if not verifier:
         #self.SESSION['goto'] = self.get_argument('to_url', None)
         auth_url = auth.get_authorization_url()+'&oauth_callback='+self.request.protocol+'://'+self.request.host+'/people/auth/'
         self.SESSION['oauth_request_token'] = auth.request_token
         self.redirect(auth_url)
     else:
         request_token = self.SESSION['oauth_request_token']
         del self.SESSION['oauth_request_token']
         auth.set_request_token(request_token.key, request_token.secret)
         access_token = auth.get_access_token(verifier)
         self.SESSION['oauth_access_token'] = access_token
         me = WeiboAPI(auth).me()
         self.after_auth(me)
예제 #21
0
def do_auth():
    auth = OAuthHandler(APP_KEY, APP_SECRET, BACK_URL)
    auth_url = auth.get_authorization_url()
    request_token_key = auth.request_token.key
    request_token_secret = auth.request_token.secret
    auth.set_request_token(request_token_key, request_token_secret)
    webbrowser.open(auth_url)
    verifier = input("Verifier: ").strip()
    access_token = auth.get_access_token(verifier)
    ATK = access_token.key
    ATS = access_token.secret
    auth.setAccessToken(ATK, ATS)
    api = API(auth)
    user = api.verify_credentials()
    logging("[AUTH]: We are uing API from account: [uid = %s, name = %s]" %
            (user.id, user.screen_name))
    return api
예제 #22
0
 def GET(self):
     access_token=session.get('access_token',None)
     if not access_token:
         auth = OAuthHandler(key.CONSUME_KEY, key.CONSUME_SECRET,web.ctx.get('homedomain')+'/callback')
         #获得新浪微博的认证url地址
         auth_url = auth.get_authorization_url()
         logger.debug("认证地址为:%s"%auth_url)
         #在session中保存request_token,用于在新浪微博认证通过后换取access_token
         session.request_token=auth.request_token
         web.seeother(auth_url)
     else:
         auth = OAuthHandler(key.CONSUME_KEY, key.CONSUME_SECRET)
         auth.access_token=access_token
         api=API(auth)
         user=api.verify_credentials()
         friends=api.friends()
         return render_template('index.html',friends=friends,user=user)
예제 #23
0
파일: web.py 프로젝트: wangsongf/python
 def GET(self):
     access_token = session.get('access_token', None)
     if not access_token:
         """ 
          key.py中放置了开发者的信息 
          """
         auth = OAuthHandler(key.CONSUME_KEY, key.CONSUME_SECRET,
                             web.ctx.get('homedomain') + '/callback')
         #获取授权url
         auth_url = auth.get_authorization_url()
         session.request_token = auth.request_token
         web.seeother(auth_url)
     else:
         auth = OAuthHandler(key.CONSUME_KEY, key.CONSUME_SECRET)
         auth.access_token = access_token
         api = API(auth)
         user = api.verify_credentials()
         return render_template('index.html', user=user)
예제 #24
0
def login(request):
    '''get a permanent access token'''
    session = get_current_session()
    if not request.GET.get('oauth_token'):
        '''login and save oauth token'''
        cur_url = _get_absolute_path(request)
        auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET, callback = cur_url)
        auth_url = auth.get_authorization_url()
        # 需要保存request_token的信息,留做取access_token用
        session["oauth_token"] = auth.request_token.key
        session["oauth_token_secret"] = auth.request_token.secret
        return http.HttpResponseRedirect(auth_url)
    else:
        ''' Get the access token '''
        oauth_verifier = request.GET.get('oauth_verifier')
        auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
        # 从session中取出request_token的信息
        auth.set_request_token(session["oauth_token"], session["oauth_token_secret"])
        auth.get_access_token(oauth_verifier)
        # save access token
        session['access_token_key'] = auth.access_token.key
        session['access_token_secret'] = auth.access_token.secret
        response = shortcuts.redirect('sinaweibo.views.mainPage')
        return response
        
        
    if 0:
        path = os.path.join(os.path.dirname(__file__), "templates/index.html")
        myself = api.get_user(id=1894001933)
        screen_name = myself. __getattribute__("screen_name")
        self.response.out.write(template.render(path,
                {"name": screen_name}))#dir(api.verify_credentials)}))#api.verify_credentials.name}))#screen_name}))

    if 0:
        params = {}
        params['test'] = 'nothing'
        return shortcuts.render_to_response('test.html', params)

    if 0:
        # add GET para and redirect
        response = shortcuts.redirect('sinaweibo.views.mainPage')
        response['Location'] += '?oauth_verifier=%s' % oauth_verifier
        return response
            
예제 #25
0
def WeiboAuthV1():
    auth = OAuthHandler(WEIBO_APP_KEY, WEIBO_APP_SECRET)
    auth_url = auth.get_authorization_url()
    print ""
    print "请在浏览器中访问下面链接,授权给buzz2weibo后,会获得一个授权码。"
    print ""
    print auth_url
    print ""

    while True:
        verifier = raw_input("请输入授权码:").strip()
        try:
            token = auth.get_access_token(verifier)
        except HTTPError:
            print "授权码不正确或者过期,请重新运行本向导"
            sys.exit(1)
        else:
            break

    weibo_token_key = token.key
    weibo_token_secret = token.secret
예제 #26
0
파일: PCRemote.py 프로젝트: laddcn/PCRemote
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,"PCRemote",size=(400,260),pos=(400,200))
        if os.path.isfile("token")==False:#第一次使用进行验证,把得到的用户key和secret写入token文件中,以后使用不用再验证PIN码
            app_key="3146673438"
            app_secret="f65a02335629c4ff5c4a5314fedfa97f" 
            auth = OAuthHandler(app_key, app_secret)
            auth_url = auth.get_authorization_url()
            wx.MessageBox("你这是第一次使用该软件,请在接下来代开的网页中\n允许使用该应用,并将获得的PIN吗复制下来","验证")
            webbrowser.open(auth_url)
            text= wx.GetPasswordFromUser("请授权该应用,并将您获得的PIN码\n复制到下面的方框内","PIN")
            token=auth.get_access_token(string.atoi(text)) 
            file=open("token","w")
            file.write(token.key+"\n"+token.secret)
            file.close()
            wx.MessageBox("恭喜您,验证成功!","验证")
            
        self.weibo=MyWeibo()

        self.timer=wx.Timer(self)#设置定时器
        self.Bind(wx.EVT_TIMER,self.OnTimer,self.timer)
        self.timer.Start(10000)
        
        self.panel=wx.Panel(self,-1)
        self.createMenuBar()
예제 #27
0
from weibopy.auth import OAuthHandler
from weibopy.api import API
import webbrowser

#此应用的开发者密钥(此处应替换为创建应用时获取到的开发密钥)
APP_KEY = '1234567890';
APP_SECRET = 'abcdefghijklmnopqrstuvwxyz123456';

#设定网页应用回调页面(桌面应用设定此变量为空)
BACK_URL = "http://beauty.hit.edu.cn/backurl";
#验证开发者密钥.
auth = OAuthHandler( APP_KEY, APP_SECRET, BACK_URL );
# 二、应用授权相关代码
#获取授权页面网址.
auth_url = auth.get_authorization_url();
webbrowser.open(auth_url)
verifier = raw_input('PIN: ').strip() 
#取出请求令牌密钥(桌面应用跳过此处)
rtKey = auth.request_token.key;
rtSecret = auth.request_token.secret;
#   进行到这一步针对桌面应用和网页应用有两个不同的分支:
#   1、桌面应用将授权页面网址提供给用户,用户访问授权页面,输入用户名和密码并通过验证之后,获取到一个授权码,回到桌面应用中提交该授权码。
#   2、网页应用直接将用户引导至授权页面,引导前应将rtKey和rtSecret缓存到Session中。当用户在授权页面输入用户名和密码并通过验证之后,
#     授权页面会调用网页应用的回调页面,同时传递参数oauth_token和oauth_verifier,其中oauth_token应和rtKey相同(回调页面中需确认此处),
#     而oauth_verifier即为授权码,下文中简称为verifier。
#   有了授权码verifier之后,加上之前缓存在Session中的rtKey和rtSecret便可获取用户令牌密钥。

#设定请求令牌密钥(桌面应用跳过此句)
auth.set_request_token( rtKey, rtSecret );
예제 #28
0
 def get(self):
     sina = OAuthHandler(app_key,app_secret)
     sina_auth_url = sina.get_authorization_url()
     twitter = tweepy.OAuthHandler(consumer_key,consumer_secret)
     twitter_auth_url = twitter.get_authorization_url()
     self.response.out.write(html_src % (twitter_auth_url,sina_auth_url,twitter.request_token.key,twitter.request_token.secret,sina.request_token.key,sina.request_token.secret))
예제 #29
0
파일: sina.py 프로젝트: vincentwyshan/VGA
def authorization_url(callback_url=''):
    auth = OAuthHandler( APP_KEY, APP_SECRET, callback_url);
    auth_url = auth.get_authorization_url()
    return auth_url, auth.request_token.key, auth.request_token.secret
예제 #30
0
파일: run.py 프로젝트: bbsteel/weibo_backup
class WeiboBackup(object):
    """
    新浪微博自动备份.
    """
    def __init__(self):
        self.hdl = OAuthHandler(APP_KEY, APP_SECRET)
        self.api = None
        self.writer = None
        self.token  = {}

    def auth(self, pin):
        try:
            token = self.hdl.get_access_token(pin)
            """
            self.token = dict(parse_qsl(token))
            self.hdl.setToken(
                self.token['oauth_token'],
                self.token['oauth_token_secret']
            )
            self.hdl.setToken(
                ACCESS_TOKEN,
                ACCESS_SECRET
            )
            """
            self.api = API(self.hdl)
        except Exception as e:
            print e

    def get_auth_url(self):
        return self.hdl.get_authorization_url()

    def get_data(self, screen_name, page):
        count = 200
        while True:
            try:
                res = self.api.user_timeline(
                    screen_name=screen_name,
                    count=count,
                    page=page
                )
                if len(res)==0:
                    return page
                else:
                    for status in res:
                        text = status.text
                        retweet = getattr(
                            status,
                            "retweeted_status",
                            False
                        )
                        if retweet:
                            text = text+"//"+retweet.text
                        text = text.encode("utf-8")
                        self.writer.append(text)
                page = page+1
            except Exception as e:
                print e
            

    def backup(self, screen_name, filename):
        self.writer = Writer(filename)
        page,alert_num = 1,0
        while alert_num<ALERT_MAX_TIMES:
            page = self.get_data(screen_name, page)
            alert_num += 1
예제 #31
0
파일: oauth.py 프로젝트: bsspirit/DotABook
class WebOAuthHandler(): 
	def __init__(self):
		self.back_url = current_app.config['SERVER_PATH']+'oauth/callback'
		self.oauth = OAuthHandler(consumer_key, consumer_secret)
	def get_authorizate_url(self):
		return self.oauth.get_authorization_url() + '&oauth_callback=' + self.back_url