12-第三方登录

一、第三方登录

1.1、第三方登录开发模式

首先注册第三方登录开发平台例如微博开放平台

 

 

 

1.2、oauth2.0获取微博的access_token

  

 

 apps/utils/weibo_longin.py

def get_auth_url():#获取code参数
    weibo_auth_url = 'https://api.weibo.com/oauth2/authorize'
    redirect_url = 'http://46.92.87.172.:8000/complete/weibo/'
    auth_url = weibo_auth_url+'?client_id={client_id}&redirect_uri={re_url}'.format(client_id=xxxxxxx,re_url=redirect_url)
    print(auth_url)

def get_user_info(access_token='',uid=''): #根据微博API接口可以访问用户信息等
    user_url = ''
    """
    可以利用这个接口爬取微博信息(爬虫思路)
    """

def get_access_token(code='xxxxxxxx'): #获取access_token参数
    access_token_url = 'https://api.weibo.com/oauth2/access_token'
    import requests
    re_dict = requests.post(access_token_url,data={
        'client_id':'xxxxxxx',
        'client_secret':'xxxxxxxx',
        'grant_type':'authorization_code',
        'code':code,
        'redirect_uri':'http://46.92.87.172.:8000/complete/weibo/',
    })
    pass

if __name__ == '__main__':
    get_auth_url()#返回值http://46.92.87.172:8000/complete/weibo/?code=82421357206bb942c29e00b591fb9358
    get_access_token(code='xxxxxxx')

 

 

 

 返回成功可以利用它去访问用户信息等,根据官方API,爬虫可以有效利用这个思路进行。

1.3、social_django集成第三方登录

 如果每次都像上面一样做重复性的代码工作是很枯燥的,当然github上已经有人对第三方登录写了一个库。

 安装库:

pip3 install social-auth-app-django

settings.py:

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

迁移social-auth=app=django表:

./manage.py migrate

settings.py:

AUTHENTICATION_BACKENDS = (
    "users.views.CustomBackend",
'social_core.backends.open_id.OpenIdAuth',
    'social_core.backends.weibo.WeiboOAuth2',
    'social_core.backends.weixin.WeixinOAuth2',
    'social_core.backends.qq.QQOAuth2',
    'django.contrib.auth.backends.ModelBackend',
)

urls.py:

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

settings.py:

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

settings.py:

#配置第三方登录
SOCIAL_AUTH_WEIBO_KEY = 'foobar'
SOCIAL_AUTH_WEIBO_SECRET = 'bazqux'

SOCIAL_AUTH_QQ_KEY = 'foobar'
SOCIAL_AUTH_QQ_SECRET = 'bazqux'

SOCIAL_AUTH_WEIXIN_KEY = 'foobar'
SOCIAL_AUTH_WEIXIN_SECRET = 'bazqux'
#登陆成功后跳转
SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/index/'

 

 登陆成功。

原文地址:https://www.cnblogs.com/lishuntao/p/11918383.html