1.配置main.py
from flask import Flask # 初始化flask def create_app(): app = Flask(__name__) with app.app_context(): pass return app app = create_app() # 注册微博蓝图 from views.weibo import bp_users app.register_blueprint(bp_users,url_prefix='/users/') #解决跨域 from flask_cors import CORS CORS(app) # 解决中文乱码 app.config['JSON_AS_ASCII']=False # 导入微博配置 app.config['SECRET_KEY'] = '123123wadaws' # 下面是SMTP服务器配置 app.config['MAIL_SERVER'] = 'smtp.163.com' # 电子邮件服务器的主机名或IP地址 app.config['MAIL_PORT'] = '25' # 电子邮件服务器的端口 app.config['MAIL_USE_TLS'] = True # 启用传输层安全 app.config['MAIL_USERNAME'] = 'Jch_676139664@163.com' # os.environ.get('MAIL_USERNAME') #邮件账户用户名 app.config['MAIL_PASSWORD'] = 'XXOWYMNBUMGHEBOV' # os.environ.get('MAIL_PASSWORD') #邮件账户的密码 # 运行接口 if __name__ == "__main__": app.run(debug=True,host='127.0.0.1',port=8000)
在文件夹下创建view 在view下创建weibo.py文件夹
weibo.py代码如下:
from flask import Flask,request,Blueprint,jsonify,redirect # flask 中跳转 import requests import re import json from db import db1 from utils.jwt_c import jwte # 加密 # 声明蓝图 bp_users = Blueprint('users',__name__) from db import db1 @bp_users.route('/weiboCallback/',methods=['POST','GET']) def weiboCallback(): # 获取code code = request.args.get("code") # print(code) # 微博认证地址 access_token_url = "https://api.weibo.com/oauth2/access_token" # 参数 response = requests.post(access_token_url, data={ "client_id": '3648830690', "client_secret": "916d80b477ccffce5d70e63b02bb1092", "grant_type": "authorization_code", "code": code, "redirect_uri": "http://127.0.0.1:8000/users/weiboCallback/", }) res = eval(str(response.text)) try: uid = res['uid'] token = res['access_token'] except Exception as e: uid = 0 return redirect('http://localhost:8888/error/') # 通过uid去三方登录表查询数据量 sql = "select u.nikename,u.id,u.email from sf_login as sf inner join users as u on sf.user_id=u.id where sf.uid=%d"%(int(uid)) res = db1.find(sql) if res: # 找到生成token返回 token1 = jwte.j_encode({"data":{'id':res['id'],'email':res['email']}}) return redirect('http://localhost:8888/bandMobile/?type=1&id='+str(res['id'])+'&email='+res['email']+'&token='+token1) # return redirect("http://localhost:8888/?id="+res['id']+'&nikename='+res['nikename']+'&email='+res['email']) else: # 不存在绑定用户 *** 作 redirect 跳转到vue页面,将uid token 携带 来自那微博还是微信还是qq return redirect('http://localhost:8888/bandMobile/?type=2&uid=' + uid + '&token=' + token) @bp_users.route('/bainMobile/',methods=['POST']) def bainMobile(): # 在vue页面上显示一个输入框 绑定手机号 data = request.data if data: data = json.loads(data) else: data = request.form print(data) # 先用mobile去用户表生成信息 sql = "select id from users where email='%s'"%(data['email']) email = db1.find(sql) if email: return jsonify({"code":403,'msg':'邮箱存在,不可绑定'}) else: # 三方登录添加信息 try: # sql = "insert into users(email) values ('%s')"%(data['email']) sql = "insert into users(email) values ('%s')" %(data['email']) db1.update(sql) except : return jsonify({"code":10050,'msg':'用户添加失败'}) # 查询id sql1 = "select id,email from users where email = '%s'"%(data['email']) user = db1.find(sql1) # 三方登录表 try: sql2 = "insert into sf_login(user_id,platfrom,uid,token) values(%d,'weibo','%s','%s')"%(int(user['id']),data['uid'],data['token']) db1.update(sql2) sql3 = "update users set status=1 where email='%s'" %(data['email']) db1.update(sql3) token1 = jwte.j_encode({"data": {'id': user['id'], 'email': user['email'],}}) return jsonify({'code':200,'id':user['id'],'email':user['email'],'token':token1}) except : return jsonify({'code':403,'msg':'添加三方失败'})
前端
//跳转地址 // 点击获取后端的url 并且传入前端赋值weibo_url
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)