Exemple #1
0
class OauthClient(object):
    def __init__(self, client_id, client_secret, redirect_uri='oob'):
        self.__client_id = client_id
        self.__client_secret = client_secret
        self.__redirect_uri = redirect_uri
        self.__domain = 'https://openapi.baidu.com/oauth/2.0/'
        self.__http_object = HttpObject()

    def get_authorize_url(self, state='', scope='', display='page'):
        '''
        Get baidu oayuth2's authorization granting url.
        '''
        return '%s%s?%s' % (self.__domain, 'authorize',
                            self.__http_object.params_encode(
                                response_type='code',
                                client_id=self.__client_id,
                                redirect_uri=self.__redirect_uri,
                                scope=scope,
                                display=display,
                                state=state))

    def get_access_token_by_authorization_code(self, code):
        '''
        Get access token ifno by authorization code.
        '''
        try:
            return self.__http_object.get('%s%s' % (self.__domain, 'token'),
                                          client_id=self.__client_id,
                                          client_secret=self.__client_secret,
                                          redirect_uri=self.__redirect_uri,
                                          code=code,
                                          grant_type='authorization_code')
        except OpenApiError, e:
            return e
Exemple #2
0
class OauthClient(object):
    def __init__(self,  client_id,  client_secret,  redirect_uri = 'oob'):
        self.__client_id = client_id
        self.__client_secret = client_secret
        self.__redirect_uri = redirect_uri
        self.__domain = 'https://openapi.baidu.com/oauth/2.0/'
        self.__http_object = HttpObject() 
        
    def get_authorize_url(self,  state = '',    scope = '',  display = 'page'): 
        '''
        Get baidu oayuth2's authorization granting url.
        ''' 
        return '%s%s?%s' % (self.__domain,  'authorize',  
                            self.__http_object.params_encode( response_type = 'code', 
                                client_id = self.__client_id,  redirect_uri = self.__redirect_uri,  
                                scope = scope, display = display, state = state))
                    
    def get_access_token_by_authorization_code(self,  code):
        '''
        Get access token ifno by authorization code.
        '''
        try:
            return self.__http_object.get('%s%s' % (self.__domain, 'token'), 
                client_id = self.__client_id, 
                client_secret = self.__client_secret, 
                redirect_uri = self.__redirect_uri, 
                code = code, 
                grant_type = 'authorization_code')
        except OpenApiError,  e:
            return e
Exemple #3
0
 def __init__(self,  client_id,  client_secret,  redirect_uri = 'oob'):
     '''
     Constructor.
     '''
     self.__client_id = client_id
     self.__client_secret = client_secret
     self.__redirect_uri = redirect_uri
     self.__oauth_client = None
     self.__api_client = None
     self.__logout_domain = 'https://openapi.baidu.com/connect/2.0/logout'
     self.__http_object = HttpObject()
     self.__utils = BaiduUtils()
Exemple #4
0
class BaiduApiClient(object):
    def __init__(self):
        self.__http_object = HttpObject()
    
    def __call(self,  url,  http_type,  **params):
        method = http_type.lower()
        try:
            if method == 'get':
                return self.__http_object.get(url,  **params)
            else:
                return self.__http_object.post(url,  ** params)
        except OpenApiError,  e:
            return e    
 def __init__(self,  access_token):
     '''
     Initialize by access token.
     '''
     self.__access_token = str(access_token)
     self.__domain = 'https://pcs.baidu.com/rest/2.0/pcs/'
     self.__http_object = HttpObject() 
class BaiduNetdisk(object):
    def __init__(self,  access_token):
        '''
        Initialize by access token.
        '''
        self.__access_token = str(access_token)
        self.__domain = 'https://pcs.baidu.com/rest/2.0/pcs/'
        self.__http_object = HttpObject() 
    def quota(self):
        '''
        Get user quota info.
        '''
        try:
            return self.__http_object.get('%s%s' % (self.__domain, 'quota'), 
                method = 'info',
                access_token = self.__access_token
                )
        except OpenApiError,  e:
            return e
Exemple #7
0
 def __init__(self,  client_id,  client_secret,  redirect_uri = 'oob'):
     self.__client_id = client_id
     self.__client_secret = client_secret
     self.__redirect_uri = redirect_uri
     self.__domain = 'https://openapi.baidu.com/oauth/2.0/'
     self.__http_object = HttpObject() 
Exemple #8
0
class Baidu():
    def __init__(self,  client_id,  client_secret,  redirect_uri = 'oob'):
        '''
        Constructor.
        '''
        self.__client_id = client_id
        self.__client_secret = client_secret
        self.__redirect_uri = redirect_uri
        self.__oauth_client = None
        self.__api_client = None
        self.__logout_domain = 'https://openapi.baidu.com/connect/2.0/logout'
        self.__http_object = HttpObject()
        self.__utils = BaiduUtils()
        
    def get_baidu_oauth2_server(self):
        '''
        Get an instance of Baidu OauthClient class.
        '''
        if not self.__oauth_client:
            self.__oauth_client = OauthClient(self.__client_id,  self.__client_secret,  self.__redirect_uri)
        return self.__oauth_client
        
    def get_baidu_api_client_server(self):
        '''
        Get an instance of BaiduApiClient class
        '''
        if not self.__api_client:
            self.__api_client = BaiduApiClient()
        return self.__api_client

    def get_logged_in_user(self,  access_token,  bd_user = None,  bd_sign = None):
        '''
        Get currently logged in user's info.
        '''
        api_client = self.get_baidu_api_client_server()
        user = api_client.api('https://openapi.baidu.com/rest/2.0/passport/users/getLoggedInUser',  
                                     access_token = access_token)
        if bd_sign and bd_user:
            params = {}
            params['bd_user'] = bd_user
            sign = self.__utils.generate_sign(params,  self.__client_secret)
            if sign != bd_sign or bd_user != user['uid']:
                return None
        return user        
    
    def get_login_url(self,  state = '',  scope ='',  display = 'page'):
        '''
        Get a Login URL for user with redirects. By default, full page redirect is	    
        assumed. If you are using the generated URL with a window.open() call in
        JavaScript, you can pass in display=popup as part of the $params.
        '''
        oauth_client = self.get_baidu_oauth2_server()
        return oauth_client.get_authorize_url(scope,  state,  display)
        
    def get_logout_url(self,  access_token,  next):
        '''
        Get a Logout URL suitable for user with redirects.
        '''
        
        return '%s?%s' % (self.__logout_domain,  
                          self.__http_object.params_encode(access_token = access_token,  next = next))
Exemple #9
0
 def __init__(self):
     self.__http_object = HttpObject()