Outh2.0----微博登录
1.微博开发者平台注册https://open.weibo.com/
- 注册成功后获取到
key
和secret
- 在高级设置中设置授权回调页
授权回调页就是登录成功或者取消登录后跳转的页面
2.Django配置
-
setting.py
# 微博登录数据 WEIBO_URL = 'https://api.weibo.com/oauth2/authorize' WEIBO_KEY = 'XXXXXXXXXXX' WEIBO_SECRET = 'XXXXXXXXXXXXXXXXX' WEIBO_REDIRCT_URL = 'http://192.168.31.38/weibo_callback.html'
-
获取微博登录的url
def weibo_url_view(request): if request.method == "GET": weibo_url = settings.WEIBO_URL weibo_key = settings.WEIBO_KEY redirect_uri = settings.WEIBO_REDIRCT_URL data = { 'client_id': weibo_key, "redirect_uri": redirect_uri } res = weibo_url + '?' + urlencode(data) return JsonResponse({"status": 200, "data": res})
获取后访问该页面
-
访问页面,登录成功后会自动跳转到回调页面并且会在url中返回一个code
http://192.168.31.38/weibo_callback.html?code=xxxxxxxxxxx
-
将code发送到微博进行验证
def get_token(code): token_url = 'https://api.weibo.com/oauth2/access_token' post_data = { 'client_id': settings.WEIBO_KEY, 'client_secret': settings.WEIBO_SECRET, 'grant_type': 'authorization_code', 'redirect_uri': settings.WEIBO_REDIRCT_URL, 'code': code, } res = requests.post(token_url, data=post_data) if res.status_code == 200: # {"access_token":"2.00WrBp4C0hKSqO3e1c084b0bC4a2iB","remind_in":"157xxxx","expires_in":157679999,"uid":"xxxxxx","isRealName":"true"} return json.dumps(res.text) return None
如果返回指定结果,表示登录成功
参考文档:https://open.weibo.com/wiki/Connect/login