第四百零四節,python網站第三方登陸,social-auth-app-django模塊,

第四百零四節,python網站第三方登陸,social-auth-app-django模塊,html

 

social-auth-app-django模塊是專門用於Django的第三方登陸OAuth2協議模塊python

目前流行的第三方登陸都採用了OAuth2協議mysql

安裝sql

pip install -i https://pypi.douban.com/simple social-auth-app-django

依賴關係數據庫

PyJWT-1.5.3 
certifi-2017.7.27.1 
chardet-3.0.4 
defusedxml-0.5.0 
idna-2.6 
oauthlib-2.0.4 
python3-openid-3.1.0 
requests-2.18.4 
requests-oauthlib-0.8.0 
six-1.11.0 
social-auth-app-django-1.2.0 
social-auth-core-1.4.0 
urllib3-1.22

 使用文檔 http://coding.imooc.com/lesson/131.html#mid=7393django

 

使用配置服務器

1.將social_django添加到app配置,settings.py微信

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app1',
    'social_django',
]
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',                           # 配置數據庫引擎名稱
        'NAME': 'jxiou',                                                # 數據庫名稱
        'USER': 'test_user',                                            # 數據庫用戶名
        'PASSWORD': 'test_user',                                        # 數據庫密碼
        'HOST': '127.0.0.1',                                            # 數據庫連接地址,爲服務器ip
        'PORT': '3306',                                                 # 數據庫端口
    }
}

 

 

2,輸入命令migrate來生成第三方登陸須要的表session

 

3.配置須要的第三方登陸模塊,settings.pyapp

第三方登陸模塊放在social_core插件下的backends目錄,裏面有不少第三方登陸模塊,好比,微信,微博,QQ等

# 設置要使用的第三方登陸
AUTHENTICATION_BACKENDS = (
    'social_core.backends.weixin.WeixinOAuth2',         # 使用微信登陸
    'social_core.backends.qq.QQOAuth2',                 # 使用QQ登陸
    'django.contrib.auth.backends.ModelBackend',        # 指定django的ModelBackend類
)

 

4.配置第三方登陸路由url

from django.conf.urls import url, include                   # 導入django自在的include邏輯
from django.contrib import admin
from app1.views import alipaview

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # 支付寶返回url
    url(r'^alipa/', alipaview, name='alipa'),

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

 

5.配置 TEMPLATES,settings.py

配置這裏,當用戶登陸的時候,若是用戶不存在,會自動在用戶表建立用戶,而且關聯用戶信息

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',
            ],
        },
    },
]

 

使用第三方配置

# 設置要使用的第三方登陸
AUTHENTICATION_BACKENDS = (
    'social_core.backends.weibo.WeiboOAuth2',           # 使用微博登陸
    'social_core.backends.weixin.WeixinOAuth2',         # 使用微信登陸
    'social_core.backends.qq.QQOAuth2',                 # 使用QQ登陸
    'django.contrib.auth.backends.ModelBackend',        # 指定django的ModelBackend類
)

# 配置微博開放平臺受權
# SOCIAL_AUTH_要使用登陸模塊的名稱大小_KEY,其餘如QQ相同
SOCIAL_AUTH_WEIBO_KEY = '1359594035'
SOCIAL_AUTH_WEIBO_SECRET = '7d33714722f4e5572c116ce2b2433a99'

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

 

配置後,啓動程序,根據url來構造請求地址和,回調地址

urlpatterns = [
    # authentication / association
    # <backend>是一個變量接收要使用登陸模塊的名稱小寫
    # 請求URL
    url(r'^login/(?P<backend>[^/]+){0}$'.format(extra), views.auth,
        name='begin'),
    # 回調URL
    url(r'^complete/(?P<backend>[^/]+){0}$'.format(extra), views.complete,
        name='complete'),
    # disconnection
    url(r'^disconnect/(?P<backend>[^/]+){0}$'.format(extra), views.disconnect,
        name='disconnect'),
    url(r'^disconnect/(?P<backend>[^/]+)/(?P<association_id>\d+){0}$'
        .format(extra), views.disconnect, name='disconnect_individual'),
]

請求URL構造爲:http://域名或者ip/login/使用模塊名稱小寫/

如:http://127.0.0.1:8000/login/weibo/

 

回調URL構造爲:http://域名或者ip/complete/使用模塊名稱小寫/

如:http://127.0.0.1:8000/complete/weibo/

回調URL通常須要設置到開放平臺的後臺

 

前臺頁面能夠調用,請求url

<a href="{% url "social:begin" "weibo" %}">微博登陸</a>

 

social_auth_usersocialauth 數據表裏就是管理用戶表的信息

相關文章
相關標籤/搜索