Exemplo n.º 1
0
def sinaWeiBo(appKey,appSecret,infoDb,user,content):
    access_token=infoDb.get(user,None)
    if not access_token:
        client = APIClient(app_key=appKey, app_secret=appSecret)
   		# 用appKey创建一个client
        request_token = client.get_request_token()
        # 1.app认证,如果认证成功,有sina返回一个request_token
        url="http://api.t.sina.com.cn/oauth/authorize?oauth_token=%s"%(request_token.oauth_token)
        # 需要用户对该app进行授权,这样保证app不会获取用户的帐号和密码
        webbrowser.open(url)
        oauth_verifier = raw_input('PIN: ').strip()
        # 验证用户是否对app授权 即2.授权认证
        request_token = OAuthToken(request_token.oauth_token, request_token.oauth_token_secret, oauth_verifier)
        # 构造新一个request_token
        client = APIClient(app_key=appKey, app_secret=appSecret, token=request_token)
        access_token = client.get_access_token()
        # 向sina获取access_token,即3.代理访问认证
        infoDb.setdefault(user,access_token)
    client = APIClient(app_key=appKey, app_secret=appSecret, token=access_token)
    client.post.statuses__update(status=content.decode('utf-8').encode('utf-8'))
    for object in client.get.statuses__user_timeline():
    	# 获取该user发布的前20条微博
        print ""
        # id = object["id"]
        text = object["text"]
        created_at = object["created_at"]
        print str(created_at)+":"+ text.encode('gb18030'),
        if 'retweeted_status' in object:
            object=object['retweeted_status']
            print "retweeted:",object['text'].encode('gb18030'),
Exemplo n.º 2
0
def get_user_info_v1(uid, oauth_token, oauth_token_secret):
    weiboClientV1 = APIClient(app_key, app_secret,
                              OAuthToken(oauth_token, oauth_token_secret))
    user = None

    try:
        user = weiboClientV1.post.users__show(source=app_key, user_id=uid)
    except Exception, e:
        print e
Exemplo n.º 3
0
def GetBlogClient(uname, passw):
    APP_KEY = u'XXXXXXXXXX'  # app key
    APP_SECRET = u'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'  # app secret
    #实例化APIClient
    client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET)
    #获取OAuth request token
    reqToken = client.get_request_token()
    #用户授权url
    auth_url = client.get_authorize_url(reqToken)
    post_data = urllib.urlencode({
        "action": "submit",
        "forcelogin": "",
        "from": "",
        "oauth_callback": "http://api.weibo.com/oauth2/default.html",
        "oauth_token": reqToken.oauth_token,
        "passwd": passw,
        "regCallback": "",
        "ssoDoor": "",
        "userId": uname,
        "vdCheckflag": 1,
        "vsnval": ""
    })

    mat = re.search(
        r'&oauth_verifier=(.+)',
        urllib2.urlopen(
            urllib2.Request("http://api.t.sina.com.cn/oauth/authorize",
                            post_data,
                            headers={
                                'User-Agent': 'Mozilla/5.0 (Windows NT 6.1)',
                                'Referer': auth_url
                            })).url)
    if mat:
        client = APIClient(
            APP_KEY, APP_SECRET,
            OAuthToken(reqToken.oauth_token, reqToken.oauth_token_secret,
                       mat.group(1)))
        #返回APIClient
        return APIClient(APP_KEY, APP_SECRET, client.get_access_token())
    else:
        raise Exception()
Exemplo n.º 4
0
def sinaWeiBo2(appKey,appSecret,name):
    client = APIClient(app_key=appKey, app_secret=appSecret,isAuthorization=False)
    for object in client.get.statuses__user_timeline(source=appKey, screen_name=name):
    	#获取该user发布的前20条微博
        print ""
        #id = object["id"]
        text = object["text"]
        created_at = object["created_at"]
        print str(created_at)+":"+ text.encode('gb18030'),
        if 'retweeted_status' in object:
            object=object['retweeted_status']
            print "retweeted:",object['text'].encode('gb18030'),