Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
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)
    )
Ejemplo n.º 3
0
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))
Ejemplo n.º 4
0
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))
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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)