#coding=utf-8
importrequestsimportjsonimportMySQLdbfrom datetime importdatetimefrom flask importFlask, redirect, request
app= Flask(__name__)#全局变量token
token ={}defget_ticket():#App Key:13866668888 app key就是url中的 YOUR_CLIENT_ID
#YOUR_REGISTERED_REDIRECT_URI就是 http://test.chinasoft.com
client_id = 13866668888redirect_url= "http://test.chinasoft.com/a"url= 'https://api.weibo.com/oauth2/authorize?client_id={app_key}&response_type=code&redirect_uri={redirect_url}'.format(app_key = client_id, redirect_url =redirect_url)returnurldefget_token(code):#App Secret:6dc11f2039
redirect_url = "http://test.chinasoft.com/a"client_secret= "6dc11f2039"client_id= 13866668888url= "https://api.weibo.com/oauth2/access_token?client_id={client_id}&client_secret={client_secret}&grant_type=authorization_code&redirect_uri={redirect_url}&code={code}".format(client_id = client_id,client_secret = client_secret,redirect_url = redirect_url,code =code)
resp=requests.post(url)globaltoken
token=resp.json()returntokendefget_info(access_token, uid):
url= "https://api.weibo.com/2/users/show.json"resp= requests.get(url, params ={'access_token':access_token,'uid':uid
})returnresp.json()defget_conn():"""获取mysql的连接"""
try:
conn=MySQLdb.connect(
host="localhost",
port=3306,
user="root",
password="root",
db="user_grade",
)exceptMySQLdb.Error as e:print("Error %d:%s" % (e.args[0], e.args[1]))returnconndefweibo_share(access_token):
url= "https://api.weibo.com/2/statuses/share.json"resp=requests.post(url, {'access_token':access_token,'status':'现在是北京时间:{0} http://test.chinasoft.com'.format(datetime.now())
})returnresp.json()
@app.route('/a')defindex():
code= request.args.get('code', None)#根据code获取token
token =get_token(code)#获取用户信息
user_info = get_info(token['access_token'], token['uid'])
third_id= user_info['id']
nickname= user_info['screen_name']
headimg= user_info['profile_image_url']#获取数据库的连接,将用户信息存入到数据库中
#create table user(third_id int,nickname varchar(255),headimg varchar(1000));
conn =get_conn()
cur=conn.cursor()#注意 sql中的 values中的字段一定要加 单引号,否则会报错
sql = "insert into user(third_id,nickname,headimg) values('{third_id}','{nickname}','{headimg}')".format(third_id = third_id,nickname = nickname,headimg =headimg)
cur.execute(sql)
conn.autocommit(True)returnjson.dumps(user_info)
@app.route('/weibo')defweibo():
ticket=get_ticket()returnredirect(ticket)
@app.route('/share')defshare():
ticket=get_ticket()
rest= weibo_share(token['access_token'])returnjson.dumps(rest)if __name__ == '__main__':
app.run(port=80, debug=True)