django+vue 使用微博三方登录
前端设置微博登录的图片 访问微博开放平台
// 跳转到新浪微博
sinalogin:function(){
// 应用id client_id=2636039333
//redirect_url: 回调网址
// 拼接新浪url
let url = "https://api.weibo.com/oauth2/authorize?client_id=2636039333&redirect_uri=http://127.0.0.1:8000/md_admin/weibo";
// 进行站外跳转
window.location.href = url;
},
django 后端代码
# 定义微博回调视图
def wb_back(request):
# 获取回调的code
code = request.GET.get('code')
# 定义认证地址
access_token_url = 'https://api.weibo.com/oauth2/access_token'
# 发起请求,交换sina的id
re_dict = requests.post(
access_token_url,
data={
"client_id": '*********', # 应用id
"client_secret": "****************", # 密钥
"grant_type": "authorization_code", # 授权方式
"code": code, # code
"redirect_uri": "http://127.0.0.1:8000/admin/weibo" # 回调网址
}
)
# 获取返回值
re_dict = re_dict.text
# 强转
re_dict = eval(re_dict)
print(re_dict)
# 判断是否为第一次登陆
user = User.objects.filter(username=str(re_dict['uid'])).first()
if user:
# 代表曾经用过新浪登录
sina_id = user.username
user_id = user.id
else:
# 代表首次登陆
user = User(username=str(re_dict['uid']),password='')
# 保存入库
user.save()
sina_id = str(re_dict['uid'])
# 查询用户id
user = User.objects.filter(username=str(re_dict['uid'])).first()
user_id = user.id
#进行跳转
return redirect('http://localhost:8080?sina_id='+str(sina_id)+'&uid='+str(user_id))