目錄
生鮮超市(十) 生鮮超市(十一) 生鮮超市(十二) 生鮮超市(十三)
代碼下載
教程
學習自慕課網-前端vue結合后端DjangoFramework的在線生鮮超市
十四、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和微信的登錄,一樣的操作,只要去開放平台注冊應用,其它跟微博登錄一樣設置就可以了。