Django REST framework+Vue 打造生鮮超市(十三)

目錄html

生鮮超市(一)    生鮮超市(二)    生鮮超市(三)   前端

生鮮超市(四)    生鮮超市(五)    生鮮超市(六)   vue

生鮮超市(七)    生鮮超市(八)    生鮮超市(九)   python

生鮮超市(十)    生鮮超市(十一)    生鮮超市(十二)    生鮮超市(十三)   git

代碼下載github

github數據庫

教程django

學習自慕課網-前端vue結合後端DjangoFramework的在線生鮮超市 後端

十4、social_django 集成第三方登陸

14.1.申請應用

 進入微博開放平臺,首先要通過認證,而後才能夠建立應用瀏覽器

 地址:http://open.weibo.com/authentication

建立應用

 

寫上應用的名字,建立好後,會有個「App Key」,這個很是重要

 

 OAuth2.0 受權設置

正常狀況下,必須通過審覈纔可讓第三方登陸,咱們能夠先用測試模式來完成。

(1)添加測試用戶,能夠測試登陸

 (2)高級信息

 

 

 14.2.第三方登陸

咱們用social_django第三方庫來實現第三方登陸

github地址,上面有使用說明

https://github.com/python-social-auth/social-app-django

(1) 安裝

pip install social-auth-app-django

 (2)INSTALL_APP中配置

'social_django',

(3)生成表

只須要作migrate,由於migration的文件已經生成好了

python manage.py migrate

能夠看到數據庫中多了五張表

 

(4) 添加到AUTHENTICATION_BACKENDS中

settings

# 設置郵箱和用戶名和手機號都可登陸
AUTHENTICATION_BACKENDS = ( 'users.views.CustomBackend', 'social_core.backends.weibo.WeiboOAuth2', 'social_core.backends.qq.QQOAuth2', 'social_core.backends.weixin.WeixinOAuth2', 'django.contrib.auth.backends.ModelBackend', )

(5)配置url

# 第三方登陸
    path('', include('social_django.urls', namespace='social'))

 (6)settings裏面context_processors

對於template中的用法,向context_processors中加入下面兩個

  'social_django.context_processors.backends', 'social_django.context_processors.login_redirect',

(7)接口

  在微博開放平臺裏面設置回調url,調試的時候設置成本地的就能夠了,上線的時候改爲服務器的ip地址

 

 (8)APP Secret和App key配置,settings裏面

# 第三方登陸,裏面的值是你的開放平臺對應的值
SOCIAL_AUTH_WEIBO_KEY = 'xxxxxxx' SOCIAL_AUTH_WEIBO_SECRET = 'xxxxxx' SOCIAL_AUTH_QQ_KEY = 'xxxxxxx' SOCIAL_AUTH_QQ_SECRET = 'xxxxxxx' SOCIAL_AUTH_WEIXIN_KEY = 'xxxxxxx' SOCIAL_AUTH_WEIXIN_SECRET = 'xxxxxxx'

 

 如今瀏覽器訪問:http://127.0.0.1:8000/login/weibo,就能夠登陸了,咱們還須要設置用戶微博登陸成功後跳轉到首頁

#登陸成功後跳轉到首頁
SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/index/'

(9)修改源碼

登陸成功跳到首頁,發現還處於未登陸狀態,咱們須要對源碼作修改

social_core/actions.py

原始代碼

return backend.strategy.redirect(url)

修改成

# 修改源碼適配drf
    response = backend.strategy.redirect(url) payload = jwt_payload_handler(user) response.set_cookie("name",user.name if user.name else user.username, max_age=24*3600) response.set_cookie("token", jwt_encode_handler(payload), max_age=24*3600) return response

如今就登陸後就正常了。qq和微信的登陸,同樣的操做,只要去開放平臺註冊應用,其它跟微博登陸同樣設置就能夠了。

相關文章
相關標籤/搜索