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> ''')
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> ''')
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
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)
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)
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
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)
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)
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)
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)))
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)))
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
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()
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)
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 )
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)
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)
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
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 ......')
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)
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
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)
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)
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
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
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()
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 );
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))
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
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
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