rest

mac2022-06-30  23

drf第三方登入–QQ–微信–微博

安装包

pip install social-auth-app-django

注册应用

INSTALLED_APPS = ( ... 'social_django', ... )

migrate

python manage.py migrate

AUTHENTICATION_BACKENDS

AUTHENTICATION_BACKENDS = ( # 第三方登入的验证 'social_core.backends.open_id.OpenIdAuth', 'social_core.backends.google.GoogleOpenId', 'social_core.backends.google.GoogleOAuth2', 'social_core.backends.google.GoogleOAuth', 'social_core.backends.twitter.TwitterOAuth', 'social_core.backends.yahoo.YahooOpenId', ... 'django.contrib.auth.backends.ModelBackend', )

url

urlpatterns = patterns('', ... url('', include('social_django.urls', namespace='social')) ... )

settings-template

TEMPLATES = [ { ... 'OPTIONS': { ... 'context_processors': [ ... 'social_django.context_processors.backends', 'social_django.context_processors.login_redirect', ... ] } } ]

app-key secret-key

SOCIAL_AUTH_TWITTER_KEY = 'foobar' SOCIAL_AUTH_TWITTER_SECRET = 'bazqux'

登入成功后的回调

SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/logged-in/'

案例

QQ第三方登入去腾讯开放平开注册应用

微信第三方登入去微信开放平开注册应用

新浪第三方登入去新浪开放平开注册应用

我这里指介绍新浪

应用需要配置位置

django–settings.py

django–url.py url里的源码 访问新浪第三方登入:127.0.0.1:8000/login/weibo/ 访问QQ第三方登入:127.0.0.1:8000/login/qq/ 访问微信第三放登入:127.0.0.1:8000/login/weixin/

由于social-auth-app-django是针对django而不是rest_framework, 所以我们这里就算用第三方登入了, 访问页面是还是不会显示用户信息, 因为rest_framework用的是jsonwebtoken, 所以我们要修改该包下的源文件actions.py 官方文档http://python-social-auth.readthedocs.org/

最新回复(0)