微博第三方登录(DRF)

微博第三方登录(DRF)

官方文档:https://python-social-auth.readthedocs.io/en/latest/

1、安装social-auth-app-django

pip install social-auth-app-django

2、注册,

INSTALLED_APPS = [
    'social_django',
]    

3、由于social_django下已经有migrations,直接migrate进行迁移数据库
在这里插入图片描述

./manage.py migrate

数据库中生成五张表
在这里插入图片描述

3、配置需要认证的第三方平台

AUTHENTICATION_BACKENDS = (
    # 第三方登录相关配置
    'social_core.backends.weibo.WeiboOAuth2',  # 微博
    'social_core.backends.qq.QQOAuth2',        # QQ
    'social_core.backends.weixin.WeixinOAuth2', # 微信
    'django.contrib.auth.backends.ModelBackend',
)

在social_core下几乎集成了全世界所有需要登录的知名平台

在这里插入图片描述

4、配置TEMPLATES:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',

                # 第三方登录配置
                'social_django.context_processors.backends',
                'social_django.context_processors.login_redirect',
            ],
        },
    },
]

5、配置url

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

6、配置第三方登录的key和select

SOCIAL_AUTH_WEIBO_KEY = 'foobar'
SOCIAL_AUTH_WEIBO_SECRET = 'bazqux'
# 需要到qq开放平台设置key和select
SOCIAL_AUTH_QQ_KEY = 'foobar'
SOCIAL_AUTH_QQ_SECRET = 'bazqux'
# 需要到微信开放平台设置key和select
SOCIAL_AUTH_WEIXIN_KEY = 'foobar'
SOCIAL_AUTH_WEIXIN_SECRET = 'bazqux'

7、指定第三方授权登录成功后跳转的url,我设置的是首页

SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/index/'

8、修改源码;

social_django 组件对原生 django 的支持较好, 但是因为 在DRF进行的验证为 JWT 方式 和 django 的验证存在区别, 因此需要修改部分源码。

修改social_core下actions.py中do_complete函数:

在这里插入图片描述

更改后再验证第三方登录时可能会出现以下报错:

在这里插入图片描述
目前可以这样修改, 但是不知道这样会不会造成不好的影响

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值