def __init__(self): print "Init Pyweibo API" #config stuff config = ConfigParser() config.read( os.path.join(os.path.abspath(".") + os.sep + 'settings.py')) # weibo api访问配置 self.APP_KEY = config.get('api', 'key') self.APP_SECRET = config.get('api', 'secret') self.CALLBACK_URL = config.get('api', 'callback') #user info self.USERID = config.get('login', 'username') # 微博用户名 self.USERPASSWD = config.get('login', 'password') # 用户密码 # token file path save_access_token_file = 'access_token.txt' file_path = os.path.dirname( os.path.abspath(__file__)) + os.path.sep + "api" + os.path.sep self.access_token_file_path = file_path + save_access_token_file # print access_token_file_path self.client = APIClient(app_key=self.APP_KEY, app_secret=self.APP_SECRET, redirect_uri=self.CALLBACK_URL)
def weibo_history(request): import time username = request.GET.get('username') user = Profile.get_by_username(username=username) access_token = user.access_token client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL) client.set_access_token(access_token, expires_in=time.time() + 10000) user_timeline = client.get.statuses__user_timeline(access_token=access_token, uid=user.sns_id) data = user_timeline['statuses'] data = [d['text'] for d in data] return HttpResponse( '\n'.join(data) )
def weibo_logout(request): username = request.GET.get('username', '') if not username: return HttpResponse(to_json(ret=401)) user = Profile.get_by_username(username) if not user: return HttpResponse(to_json(ret=500)) client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL) access_token = user.access_token expires_in = user.expires_in client.set_access_token(access_token, expires_in) client.get.account__end_session() user.logout() return HttpResponse(to_json(ret=200))
def weibo_callback(request): code = request.GET.get('code') client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL) r = client.request_access_token(code=code) access_token = r.access_token expires_in = r.expires_in client.set_access_token(access_token, expires_in) user_data = client.get.users__show(uid=r.uid, access_token=access_token) username = user_data['name'] user_id = user_data['id'] description = user_data['description'] avatar_large = user_data['avatar_large'] user_timeline = client.get.statuses__user_timeline(access_token=access_token, uid=r.uid) weibo_history = [d['text'] for d in user_timeline['statuses']] user = Profile.create_or_get_user(username=username, password='', access_token=access_token, centroid=[10, 10], sns_id=user_id, description=description, avatar=avatar_large, expires_in=expires_in, weibo_history=weibo_history) return HttpResponse(to_json(username=user.username, user_id=user.sns_id, description=user.description, avatar_large=user.avatar))
def __init__(self): print "Init Pyweibo API" #config stuff config = ConfigParser() config.read( os.path.join(os.path.abspath(".") + os.sep + 'settings.py') ) # weibo api访问配置 self.APP_KEY = config.get('api', 'key') self.APP_SECRET = config.get('api', 'secret') self.CALLBACK_URL = config.get('api', 'callback') #user info self.USERID = config.get('login', 'username') # 微博用户名 self.USERPASSWD = config.get('login', 'password') # 用户密码 # token file path save_access_token_file = 'access_token.txt' file_path = os.path.dirname(os.path.abspath(__file__)) + os.path.sep + "api" + os.path.sep self.access_token_file_path = file_path + save_access_token_file # print access_token_file_path self.client = APIClient(app_key=self.APP_KEY, app_secret=self.APP_SECRET, redirect_uri=self.CALLBACK_URL)
def weibo_login(request): client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL) url = client.get_authorize_url() return HttpResponseRedirect(url)
class weiboApi: def __init__(self): print "Init Pyweibo API" #config stuff config = ConfigParser() config.read( os.path.join(os.path.abspath(".") + os.sep + 'settings.py') ) # weibo api访问配置 self.APP_KEY = config.get('api', 'key') self.APP_SECRET = config.get('api', 'secret') self.CALLBACK_URL = config.get('api', 'callback') #user info self.USERID = config.get('login', 'username') # 微博用户名 self.USERPASSWD = config.get('login', 'password') # 用户密码 # token file path save_access_token_file = 'access_token.txt' file_path = os.path.dirname(os.path.abspath(__file__)) + os.path.sep + "api" + os.path.sep self.access_token_file_path = file_path + save_access_token_file # print access_token_file_path self.client = APIClient(app_key=self.APP_KEY, app_secret=self.APP_SECRET, redirect_uri=self.CALLBACK_URL) def make_access_token(self,username, password): '''请求access token''' params = urllib.urlencode({'action':'submit','withOfficalFlag':'0','ticket':'','isLoginSina':'', \ 'response_type':'code', \ 'regCallback':'', \ 'redirect_uri':self.CALLBACK_URL, \ 'client_id':self.APP_KEY, \ 'state':'', \ 'from':'', \ 'userId':username, \ 'passwd':password, \ }) login_url = 'https://api.weibo.com/oauth2/authorize' url = self.client.get_authorize_url() content = urllib2.urlopen(url) if content: headers = { 'Referer' : url } request = urllib2.Request(login_url, params, headers) opener = get_opener(False) urllib2.install_opener(opener) try: f = opener.open(request) print f.headers.headers return_callback_url = f.geturl print f.read() except urllib2.HTTPError, e: return_callback_url = e.geturl() # 取到返回的code code = return_callback_url.split('=')[1] #得到token token = self.client.request_access_token(code) self.save_access_token(username,token)
class weiboApi: def __init__(self): print "Init Pyweibo API" #config stuff config = ConfigParser() config.read( os.path.join(os.path.abspath(".") + os.sep + 'settings.py')) # weibo api访问配置 self.APP_KEY = config.get('api', 'key') self.APP_SECRET = config.get('api', 'secret') self.CALLBACK_URL = config.get('api', 'callback') #user info self.USERID = config.get('login', 'username') # 微博用户名 self.USERPASSWD = config.get('login', 'password') # 用户密码 # token file path save_access_token_file = 'access_token.txt' file_path = os.path.dirname( os.path.abspath(__file__)) + os.path.sep + "api" + os.path.sep self.access_token_file_path = file_path + save_access_token_file # print access_token_file_path self.client = APIClient(app_key=self.APP_KEY, app_secret=self.APP_SECRET, redirect_uri=self.CALLBACK_URL) def make_access_token(self, username, password): '''请求access token''' params = urllib.urlencode({'action':'submit','withOfficalFlag':'0','ticket':'','isLoginSina':'', \ 'response_type':'code', \ 'regCallback':'', \ 'redirect_uri':self.CALLBACK_URL, \ 'client_id':self.APP_KEY, \ 'state':'', \ 'from':'', \ 'userId':username, \ 'passwd':password, \ }) login_url = 'https://api.weibo.com/oauth2/authorize' url = self.client.get_authorize_url() content = urllib2.urlopen(url) if content: headers = {'Referer': url} request = urllib2.Request(login_url, params, headers) opener = get_opener(False) urllib2.install_opener(opener) try: f = opener.open(request) print f.headers.headers return_callback_url = f.geturl print f.read() except urllib2.HTTPError, e: return_callback_url = e.geturl() # 取到返回的code code = return_callback_url.split('=')[1] #得到token token = self.client.request_access_token(code) self.save_access_token(username, token)