def _request(self, method, uri, kw, file_params): raw_qs, qs = QQWeibo.sign(method, uri, self.consumer_key, self.consumer_secret, self.token_secret, **kw) if method == "GET": full_uri = "%s?%s" % (uri, qs) resp, content = httplib2_request(full_uri, method) else: if file_params: from past.utils import encode_multipart_data body, headers = encode_multipart_data(raw_qs, file_params) else: body = qs headers = None resp, content = httplib2_request(uri, method, body, headers=headers) log.debug("---qq check result, status: %s, resp: %s, content: %s" % (resp.status, resp, content)) if resp.status != 200: raise OAuthLoginError(msg='get_unauthorized_request_token fail, status=%s:reason=%s:content=%s' \ %(resp.status, resp.reason, content)) return content
def _request(self, method, uri, kw, file_params): raw_qs, qs = QQOAuth1Login.sign(method, uri, self.consumer_key, self.consumer_secret, self.token_secret, **kw) print "+++++ sign:", raw_qs, qs if method == "GET": full_uri = "%s?%s" % (uri, qs) resp, content = httplib2_request(full_uri, method) else: if file_params: from past.utils import encode_multipart_data body, headers = encode_multipart_data(raw_qs, file_params) else: body = qs headers = None resp, content = httplib2_request(uri, method, body, headers=headers) if resp.status != 200: raise OAuthLoginError('get_unauthorized_request_token fail, status=%s:reason=%s:content=%s' \ %(resp.status, resp.reason, content)) print "++++++ qq request content:", resp.status, resp.reason, content return content
def _request(self, method, uri, **kw): signature, qs = QQOAuth1Login.sign(method, uri, self.consumer_key, self.consumer_secret, self.token_secret, **kw) if method == "GET": full_uri = "%s?%s" % (uri, qs) resp, content = httplib2_request(full_uri, method) else: resp, content = httplib2_request(uri, method, qs) if resp.status != 200: raise OAuthLoginError('get_unauthorized_request_token fail, status=%s:reason=%s:content=%s' \ %(resp.status, resp.reason, content)) return content
def get(self, url, extra_dict=None): uri = urlparse.urljoin(self.api_host, url) if extra_dict is None: extra_dict = {} extra_dict["alt"] = "json" if extra_dict: qs = urllib.urlencode(extra_dict) if "?" in uri: uri = "%s&%s" % (uri, qs) else: uri = "%s?%s" % (uri, qs) headers = {"Authorization": "Bearer %s" % self.access_token} log.info('getting %s...' % uri) resp, content = httplib2_request(uri, "GET", headers=headers) if resp.status == 200: return content else: #TODO: 在这里如果access_token过期了需要refresh log.warn("get %s fail, status code=%s, msg=%s. go to refresh token" \ % (uri, resp.status, content)) d = config.APIKEY_DICT.get(config.OPENID_DOUBAN) login_service = DoubanLogin(d['key'], d['secret'], d['redirect_uri']) try: login_service.update_tokens(self.refresh_token) except OAuthLoginError, e: log.warn("refresh token fail: %s" % e)
def post(self, url, body, headers=None): uri = urlparse.urljoin(self.api_host, self.api_version) uri = urlparse.urljoin(uri, url) log.info("posting %s" %url) resp, content = httplib2_request(uri, "POST", body=body, headers=headers) content_json = self.check_result(uri, resp, content) return content_json
def post(self, url, body, headers=None): uri = urlparse.urljoin(self.api_host, url) if headers is not None: headers.update({"Authorization": "Bearer %s" % self.access_token}) else: headers = {"Authorization": "Bearer %s" % self.access_token} resp, content = httplib2_request(uri, "POST", body=body, headers=headers) return self.check_result(uri, resp, content)
def post(self, url, body, headers=None): uri = urlparse.urljoin(self.api_host, self.api_version) uri = urlparse.urljoin(uri, url) log.info("posting %s" %url) resp, content = httplib2_request(uri, "POST", body=body, headers=headers) content_json = self.check_result(uri, resp, content) log.info("post to sina return:%s" % content_json) return content_json
def _request(self, method, uri, kw, file_params): raw_qs, qs = QQWeibo.sign(method, uri, self.consumer_key, self.consumer_secret, self.token_secret, **kw) if method == "GET": full_uri = "%s?%s" % (uri, qs) resp, content = httplib2_request(full_uri, method) else: if file_params: from past.utils import encode_multipart_data body, headers = encode_multipart_data(raw_qs, file_params) else: body = qs headers = None resp, content = httplib2_request(uri, method, body, headers=headers) if resp.status != 200: raise OAuthLoginError(msg='get_unauthorized_request_token fail, status=%s:reason=%s:content=%s' \ %(resp.status, resp.reason, content)) return content
def post(self, url, body, headers=None): uri = urlparse.urljoin(self.api_host, self.api_version) uri = urlparse.urljoin(uri, url) log.info("posting %s" % url) resp, content = httplib2_request(uri, "POST", body=body, headers=headers) if resp.status == 200: return content else: log.warn("post %s fail, status code=%s, msg=%s" % (uri, resp.status, content)) return None
def get_openid(self, access_token): uri = '%s?access_token=%s' %(self.openid_uri, access_token) resp, content = httplib2_request(uri) if resp.status != 200: raise OAuthLoginError('[QQLogin.get_openid]msg=http_request_fail:status=%s:reason=%s' %(resp.status, resp.reason)) r = _parse_qq_response(content) openid = r and r.get('openid') if not openid: raise OAuthLoginError('[QQLogin.get_openid]msg=get_openid_fail:reason=%s' %content) return openid
def post(self, url, body, headers=None): uri = urlparse.urljoin(self.api_host, url) if headers is not None: headers.update({"Authorization": "Bearer %s" % self.access_token}) else: headers = {"Authorization": "Bearer %s" % self.access_token} resp, content = httplib2_request(uri, "POST", body=body, headers=headers) if resp.status == 200: return content else: log.warn("post %s fail, status code=%s, msg=%s" %(url, resp.status, content)) return None
def get_access_token(self, authorization_code): qs = { "client_id": self.apikey, "client_secret": self.apikey_secret, "redirect_uri": self.redirect_uri, "grant_type": "authorization_code", "code": authorization_code, } qs = urllib.urlencode(qs) resp, content = httplib2_request(self.access_token_uri, "POST", body=qs) if resp.status != 200: raise OAuthLoginError('get_access_token, status=%s:reason=%s:content=%s' \ %(resp.status, resp.reason, content)) return json_decode(content)
def get_user_info(self, access_token, uid=None): headers = {"Authorization": "Bearer %s" % access_token} qs = { "alt": "json", } uri = "%s?%s" % (self.user_info_uri, urllib.urlencode(qs)) resp, content = httplib2_request(uri, "GET", headers=headers) if resp.status != 200: raise OAuthLoginError('get_access_token, status=%s:reason=%s:content=%s' \ %(resp.status, resp.reason, content)) r = json_decode(content) user_info = DoubanUser(r) return user_info
def post(self, url, body, headers=None): uri = urlparse.urljoin(self.api_host, self.api_version) uri = urlparse.urljoin(uri, url) log.info("posting %s" % url) resp, content = httplib2_request(uri, "POST", body=body, headers=headers) if resp.status == 200: return content else: log.warn("post %s fail, status code=%s, msg=%s" \ %(uri, resp.status, content)) return None
def get_user_info(self, access_token, uid=None): headers = {"Authorization": "Bearer %s" % access_token} qs = { "alt":"json", } uri = "%s?%s" %(self.user_info_uri, urllib.urlencode(qs)) resp, content = httplib2_request(uri, "GET", headers = headers) if resp.status != 200: raise OAuthLoginError('get_access_token, status=%s:reason=%s:content=%s' \ %(resp.status, resp.reason, content)) r = json_decode(content) user_info = DoubanUser(r) return user_info
def get_user_info(self, access_token, uid): qs = { "source": self.apikey, "access_token": access_token, "uid": uid, } qs = urllib.urlencode(qs) uri = "%s?%s" % (self.user_info_uri, qs) resp, content = httplib2_request(uri, "GET") if resp.status != 200: raise OAuthLoginError('get_access_token, status=%s:reason=%s:content=%s' \ %(resp.status, resp.reason, content)) r = json_decode(content) user = SinaWeiboUser(r) return user
def update_tokens(self, refresh_token): qs = {} qs["client_id"] = self.apikey qs["client_secret"] = self.apikey_secret qs["redirect_uri"] = self.redirect_uri qs["grant_type"] = "refresh_token" qs["refresh_token"] = refresh_token resp, content = httplib2_request(self.access_token_uri, "POST", body=urllib.urlencode(qs)) if resp.status != 200: raise OAuthLoginError('refres_tokens fail, status=%s:reason=%s:content=%s' \ %(resp.status, resp.reason, content)) r = json_decode(content) return OAuth2Token.add(r.get("douban_user_id"), r.get("access_token"), r.get("refresh_token"))
def get(self, url, extra_dict=None): uri = urlparse.urljoin(self.api_host, url) if extra_dict is None: extra_dict = {} extra_dict["alt"] = "json" if extra_dict: qs = urllib.urlencode(extra_dict) if "?" in uri: uri = "%s&%s" % (uri, qs) else: uri = "%s?%s" % (uri, qs) headers = {"Authorization": "Bearer %s" % self.access_token} log.info('getting %s...' % uri) resp, content = httplib2_request(uri, "GET", headers=headers) return self.check_result(uri, resp, content)
def post(self, url, body, headers=None): uri = urlparse.urljoin(self.api_host, url) if headers is not None: headers.update({"Authorization": "Bearer %s" % self.access_token}) else: headers = {"Authorization": "Bearer %s" % self.access_token} resp, content = httplib2_request(uri, "POST", body=body, headers=headers) if resp.status == 200: return content else: log.warn("post %s fail, status code=%s, msg=%s" % (url, resp.status, content)) return None
def _request(self, api, method="POST", extra_dict=None): if extra_dict is None: extra_dict = {} params = { "method": api, "v": "1.0", "access_token": self.access_token, "format": "json", } params.update(extra_dict) _, qs = Renren.sign(self.apikey_secret, **params) uri = "%s?%s" % (self.api_host, qs) log.info('getting %s...' % uri) resp, content = httplib2_request(uri, method) if resp.status == 200: user_id = self.user_alias and self.user_alias.user_id or None excp = OAuthTokenExpiredError( user_id=None, openid_type=config.OPENID_TYPE_DICT[config.OPENID_RENREN], msg=content) jdata = json_decode(content) if content else None if jdata and isinstance(jdata, dict): error_code = jdata.get("error_code") error_msg = jdata.get("error_msg") if error_code: if str(error_code) == "105": ## 无效的token excp.set_the_profile() raise excp elif str(error_code) == "106" and self.user_alias: ## FIXME: 过期的token, 是不是106? try: new_tokens = super(Renren, self).refresh_tokens() if new_tokens and isinstance(new_tokens, dict): OAuth2Token.add( self.user_alias.id, new_tokens.get("access_token"), new_tokens.get("refresh_token")) excp.clear_the_profile() except OAuthError, e: log.warn("refresh token fail: %s" % e) excp.set_the_profile() raise e return jdata
def get_user_info(self, access_token, openid): qs = { 'access_token' : access_token, 'oauth_consumer_key' : self.apikey, 'openid' : openid, } qs = urllib.urlencode(qs) uri = '%s?%s' %(self.user_info_uri, qs) resp, content = httplib2_request(uri) if resp.status != 200: raise OAuthLoginError('[QQLogin.get_user_info]msg=http_request_fail:status=%s:reason=%s' %(resp.status, resp.reason)) r = _parse_qq_response(content) if not r: raise OAuthLoginError('[QQLogin.get_user_info]msg=get_user_info_fail:reason=%s' %content) return r
def refresh_tokens(self): qs = { "grant_type": "refresh_token", "refresh_token": self.refresh_token, "client_id": self.apikey, "client_secret": self.apikey_secret, "redirect_uri": self.redirect_uri, } resp, content = httplib2_request(self.access_token_uri, "POST", body=urllib.urlencode(qs)) excp = OAuthLoginError(self.user_alias.user_id, self.provider, 'refresh_tokens, status=%s,reason=%s,content=%s' \ %(resp.status, resp.reason, content)) if resp.status != 200: raise excp jdata = json_decode(content) if content else None return jdata
def _request(self, api, method="POST", extra_dict=None): if extra_dict is None: extra_dict = {} params = { "method": api, "v": "1.0", "access_token": self.access_token, "format": "json", } params.update(extra_dict) _, qs = Renren.sign(self.apikey_secret, **params) uri = "%s?%s" % (self.api_host, qs) log.info('getting %s...' % uri) resp, content = httplib2_request(uri, method) if resp.status == 200: user_id = self.user_alias and self.user_alias.user_id or None excp = OAuthTokenExpiredError(user_id=None, openid_type=config.OPENID_TYPE_DICT[config.OPENID_RENREN], msg=content) jdata = json_decode(content) if content else None if jdata and isinstance(jdata, dict): error_code = jdata.get("error_code") error_msg = jdata.get("error_msg") if error_code: if str(error_code) == "105": ## 无效的token excp.set_the_profile() raise excp elif str(error_code) == "106" and self.user_alias: ## FIXME: 过期的token, 是不是106? try: new_tokens = super(Renren, self).refresh_tokens() if new_tokens and isinstance(new_tokens, dict): OAuth2Token.add(self.user_alias.id, new_tokens.get("access_token"), new_tokens.get("refresh_token")) excp.clear_the_profile() except OAuthError, e: log.warn("refresh token fail: %s" % e) excp.set_the_profile() raise e return jdata
def _request(self, api, method="GET", extra_dict=None): uri = urlparse.urljoin(self.api_host, api) if extra_dict is None: extra_dict = {} params = { "access_token": self.access_token, } params.update(extra_dict) qs = urllib.urlencode(params) uri = "%s?%s" % (uri, qs) log.info('getting %s...' % uri) resp, content = httplib2_request(uri, method) if resp.status == 200: return json_decode(content) if content else None else: log.warn("get %s fail, status code=%s, msg=%s" \ % (uri, resp.status, content))
def get_access_token(self, authorization_code): qs = { 'client_id' : self.apikey, 'client_secret' : self.apikey_secret, 'redirect_uri' : self.redirect_uri, 'grant_type' : 'authorization_code', 'code' : authorization_code, } qs = urllib.urlencode(qs) uri = '%s?%s' %(self.access_token_uri, qs) resp, content = httplib2_request(uri) if resp.status != 200: raise OAuthLoginError('[QQLogin.get_access_token]msg=http_request_fail:status=%s:reason=%s' %(resp.status, resp.reason)) r = _parse_qq_response(content) token = r and r.get('access_token') if not token: raise OAuthLoginError('[QQLogin.get_access_token]msg=get_access_token_fail:reason=%s' %content) return token
def get(self, url, extra_dict=None): uri = urlparse.urljoin(self.api_host, self.api_version) uri = urlparse.urljoin(uri, url) if extra_dict is None: extra_dict = {} if not "access_token" in extra_dict: extra_dict["access_token"] = self.access_token if not "source" in extra_dict: extra_dict["source"] = self.apikey if extra_dict: qs = urllib.urlencode(extra_dict) if "?" in uri: uri = "%s&%s" % (uri, qs) else: uri = "%s?%s" % (uri, qs) log.info('getting %s...' % uri) resp, content = httplib2_request(uri, "GET") content_json = self.check_result(uri, resp, content) return content_json
def get(self, url, extra_dict=None): uri = urlparse.urljoin(self.api_host, url) if extra_dict is None: extra_dict = {} extra_dict["alt"] = "json" if extra_dict: qs = urllib.urlencode(extra_dict) if "?" in uri: uri = "%s&%s" % (uri, qs) else: uri = "%s?%s" % (uri, qs) headers = {"Authorization": "Bearer %s" % self.access_token} log.info('getting %s...' % uri) resp, content = httplib2_request(uri, "GET", headers=headers) if resp.status == 200: return content else: log.warn("get %s fail, status code=%s, msg=%s" \ % (uri, resp.status, content)) return None
def get(self, url, extra_dict=None): uri = urlparse.urljoin(self.api_host, self.api_version) uri = urlparse.urljoin(uri, url) if extra_dict is None: extra_dict = {} if not "access_token" in extra_dict: extra_dict["access_token"] = self.access_token if not "source" in extra_dict: extra_dict["source"] = self.apikey if extra_dict: qs = urllib.urlencode(extra_dict) if "?" in uri: uri = "%s&%s" % (uri, qs) else: uri = "%s?%s" % (uri, qs) log.info("getting %s..." % uri) resp, content = httplib2_request(uri, "GET") if resp.status == 200: return content else: log.warn("get %s fail, status code=%s, msg=%s" % (uri, resp.status, content)) return None
def get(self, url, extra_dict=None): uri = urlparse.urljoin(self.api_host, self.api_version) uri = urlparse.urljoin(uri, url) if extra_dict is None: extra_dict = {} if not "access_token" in extra_dict: extra_dict["access_token"] = self.access_token if not "source" in extra_dict: extra_dict["source"] = self.apikey if extra_dict: qs = urllib.urlencode(extra_dict) if "?" in uri: uri = "%s&%s" % (uri, qs) else: uri = "%s?%s" % (uri, qs) log.info('getting %s...' % uri) resp, content = httplib2_request(uri, "GET") if resp.status == 200: return content else: log.warn("get %s fail, status code=%s, msg=%s" \ % (uri, resp.status, content)) return None