python接入微博第三方API之2接入用户登录和微博发布
16lz
2021-01-22
python接入微博第三方API之2接入用户登录和微博发布
# coding=utf-8 import requests import json import MySQLdb from datetime import datetime from flask import Flask, redirect, request app = Flask(__name__) # 全局变量token token = {} def get_ticket(): # App Key:13866668888 app key就是url中的 YOUR_CLIENT_ID # YOUR_REGISTERED_REDIRECT_URI就是 http://test.chinasoft.com client_id = 13866668888 redirect_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) return url def get_token(code): # App Secret:6dc11f2039 redirect_url = "http://test.chinasoft.com/a" client_secret = "6dc11f2039" client_id = 13866668888 url = "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) global token token = resp.json() return token def get_info(access_token, uid): url = "https://api.weibo.com/2/users/show.json" resp = requests.get(url, params = { 'access_token':access_token, 'uid':uid }) return resp.json() def get_conn(): """ 获取mysql的连接""" try: conn = MySQLdb.connect( host="localhost", port=3306, user="root", password="root", db="user_grade", ) except MySQLdb.Error as e: print("Error %d:%s" % (e.args[0], e.args[1])) return conn def weibo_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()) }) return resp.json() @app.route('/a') def index(): 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) return json.dumps(user_info) @app.route('/weibo') def weibo(): ticket = get_ticket() return redirect(ticket) @app.route('/share') def share(): ticket = get_ticket() rest = weibo_share(token['access_token']) return json.dumps(rest) if __name__ == '__main__': app.run(port=80, debug=True)
更多相关文章
- 字体图标的引入和通过媒体查询改变导航样式
- HTML样式和常用选择器
- 字体图标的引用和自定义样式/媒体查询的使用
- 数据库的CURD操作、PDO本质与原理的学习
- CSS之伪类选择器和简单盒子简单案例
- 伪类选择器与盒模型常用属性
- 伪类选择器-结构伪类、根据位置选择匹配
- 7.4——常用标签与应用场景之表格与单元格
- css伪类选择器和盒模型