第三方登陆组件

GitHub 中搜索:social django app ==>找到: python-social-auth/social-app-django
文档: https://python-social-auth.readthedocs.io/en/latest/

# 1. 安装
pip install social-auth-app-django

# django 配置: https://python-social-auth.readthedocs.io/en/latest/configuration/django.html

# 2. 添加到 INSTALLED_APPS
INSTALLED_APPS = (
    ...
    ‘social_django‘,
    ...
)

# 3. 数据库迁移:第三方登陆的时候,会新建一些额外的数据表
python manage.py migrate  # 直接 migrate,不用 makemigrations,因为 migrations文件已经生成好了 

# 4. settings 中配置 AUTHENTICATION_BACKENDS (在源码中查看:social_core/backends)
AUTHENTICATION_BACKENDS = (
    ...
    "social_core.backends.weibo.WeiboOAuth2", # 所要添加的第三方登陆;如果还需要其它的第三方登陆,下面可继续添加
    "social_core.backends.qq.QQOAuth2",
    "social_core.backends.weixin.WeixinOAuth2",
    ‘django.contrib.auth.backends.ModelBackend‘,
    ...
)

# 5. 配置 URL
urlpatterns = patterns(‘‘,
    ...
    url(‘‘, include(‘social_django.urls‘, namespace=‘social‘)), # 第三方登陆URL;如果已经有用户登陆,则会将第三方登陆的用户和当前用户绑定,否则第三方登陆后将在你的网站上新创建一个用户
    ...
)

# 6. 对于 Django 的 MTV模式,设置 template
<a href="{% url "social:begin" "weibo" %}">微博</a>  # social:begin social表示名称空间,begin表示 name="begin"的那个url;
<a href="{% url "social:begin" "google-oauth2" %}">Google+</a>

# 7. 配置 Template Context Processors
TEMPLATES = [
    {
        ...
        ‘OPTIONS‘: {
            ...
            ‘context_processors‘: [
                ...
                ‘social_django.context_processors.backends‘,
                ‘social_django.context_processors.login_redirect‘,
                ...
            ]
        }
    }
]

# 8. 在setting中设置 APP key 和 APP secret
SOCIAL_AUTH_WEIBO_KEY = ‘weiboappkey...‘
SOCIAL_AUTH_WEIBO_SECRET = ‘weiboappsecret...‘

# 9. 第三方登陆成功后的跳转
SOCIAL_AUTH_LOGIN_REDIRECT_URL = ‘/index/‘

# 10. 对于前后端分离的项目使用 python-social-auth/social-app-django,需要在第三方包 social_core/actions.py 中的 do_complete() 方法中修改源码(即第三方认证完成后要把 JWT 和 username 通过set_cookie返回给前端),如下:
from rest_framework_jwt.serializers import jwt_payload_handler,jwt_encode_handler
def do_complete(backend, login, user=None, redirect_name=‘next‘,
                *args, **kwargs):
    ...
    response = backend.strategy.redirect(url)  # 完成第三方登陆后,所要重定向的URL

    # 前后端分离的项目中,需要把 JWT 添加到cookie中返回给前端
    payload = jwt_payload_handler(user)
    response.set_cookie("token",jwt_encode_handler(payload),max_age=7*24*3600)  # 设置 cookie;一定要加过期时间 max_age
    response.set_cookie("name",user.name if user.name else user.username,max_age=7*24*3600)
    return response

# 注:微博第三方登陆时,授权回调页的 地址一定要和本机的IP地址保持一致(如果是在服务器上,就和服务器的IP地址保持一致),如:127.0.0.1:8000/complete/weibo/  这个回调页是由微博向你的 浏览器 发送了一个重定向的命令;而支付宝的 notify_url 是 支付宝向你的 服务器 发送了一个Post请求

原文地址:https://www.cnblogs.com/neozheng/p/9888573.html

时间: 2024-10-10 11:03:37

第三方登陆组件的相关文章

百度apistore第三方登陆使用说明

最近做一个个人博客,其中的登陆模块我想使用第三方登陆来做.上网搜一下有好多例子,但是大多数都是一个网站的第三方登陆,如QQ.微博.人人,没有集成的组件,于是就在网上搜一下百度的apistore,百度果真没有让人失望.等我下载javascript版的sdk时,一盆冷水浇了下来,javascript版的sdk不可以下载,可能是网站出错的原因.不得已自己慢慢摸索,终于搞定了,下面我来分享一下这个插件,让后来人少走些弯路.[尼玛,百度api边的也太快了,半个月前做的例子,今天打开又不能用了.有花了一个多

百度apistore第三方登陆

最近做一个个人博客,其中的登陆模块我想使用第三方登陆来做.上网搜一下有好多例子,但是大多数都是一个网站的第三方登陆,如QQ.微博.人人,没有集成的组件,于是就在网上搜一下百度的apistore,百度果真没有让人失望.等我下载javascript版的sdk时,一盆冷水浇了下来,javascript版的sdk不可以下载,可能是网站出错的原因.不得已自己慢慢摸索,终于搞定了,下面我来分享一下这个插件,让后来人少走些弯路. 看图 后面使用PC端js组件设置,并且复制设置的代码,代码如下 <script

新浪微博第三方登陆重定向错误23123

新浪微博第三方登陆重定向错误23123 2019年06月02日 13:49:43 温室花朵 阅读数:2更多 个人分类: 第三方微博登陆21323 编辑 当我们使用微博第三方登陆的时候,发现登陆出错了,错误码为:21323,解决方案如下: 首先找到settings,看下配置:WEIBO_APP_KEY = ‘1442285’WEIBO_APP_SECRET = '809af1f4e5e9b**f635d1b173e94a’ VUE的回调 回调给callback组件 WEIBO_FUNC_BACK

Android 中实现分享和第三方登陆---以新浪微博为例

尊重原创:http://blog.csdn.net/yuanzeyao/article/details/38781957 第三方登陆和分享功能在目前大部分APP中都有,分享功能可以将自己觉得有意义的东西分享给身边的朋友,而第三方登陆可以借助已经有巨大用户基础的平台(如QQ和新浪微博)的账号,让用户在使用自己APP的时候不用注册,直接使用第三方账号登陆,从而避免了注册的过程(其实是服务器端帮你注册),这对于吸引更多的用户非常有意义.下面我们就以新浪微博为例,讲解如何实现分享功能和第三方登陆.首先你

使用overtrue/socialite实现第三方登陆

composer下载包 将申请的配置内容放在.ENV文件中 在services.php文件中引用 控制器 其他第三方登陆同理,拿到client_id,client_secret 和redirect_url就行了 整理自:www.laravist.com

网站添加第三方登陆(PHP版)

这两周正在写毕业设计,我做的是一个问答网站.先介绍一下这个网站:这是一个关于大学生在线问答的网站,类似知乎和百度知道,不过功能没有人家多,毕竟这个网站我一个人在做.网站部署在阿里云,网站包括API,Web,IOS,三大模块,现在没有找到人帮忙写安卓,唉...  网站API已经写完了,Web端正在完善开发中,毕业答辩之前会吧基本功能上线,小伙伴们可以访问看看增加人气,不过没有写完,并且看着不咋好看,因为没人写前端,我又不擅长写页面所以有点低端.域名是:http://www.olas.cn 上面说的

QQ第三方登陆

第一步 引入第三方登陆类,实例化,调用类中方法getInstance()跳转到授权页面 第二步 登陆成功的回调方法,qq_return则是登陆成功会获取到的数据的处理方法 qq_return方法: 本文只是简单的分享一下QQ第三方登陆的步骤和方法,用的是TP3.2框架.

适配iOS9时候,qq和微信第三方登陆一直失败-canOpenURL: failed for URL:

我当时采用的shareSDK集成的第三方登陆功能,我先将白名单添加到一个info.plist文件里面,微博和人人的可以登陆,而qq和微信无法登陆,于是我将白名单等写在了TARGETS的info里面.发现可以进行登陆了.

umeng_communitySDK第三方登陆集成

第一步:先登陆友盟账号: 如果没有友盟账号就先去注册一个友盟账号: 第二步登陆成功: 点击友盟开发者中心中的:SDK与文档 第三步:在SDK与文档中找到U-COMS微社区 点击U-COMS微社区 第四步:根据友盟的SDK步骤 第五步:下载最新的SDK然后并且把SDK包拖到工程中例如:umeng_community_ios_v2.5.0 刚刚导入SDK时候会出现跟多错误,所以接下来一步步解决 { 首先添加Framework { 先点击工程:找到Build Phases—>Link Binary W