• 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/'

     

     登陆成功。

  • 相关阅读:
    了解jQuery
    jQuery其他关系查找方法
    jQuery中的入口函数
    漫谈《挪威的森林》
    再说变
    再说鞋
    SDG
    Apache Geode简介
    2021/11/24策略模式
    2021/11/26
  • 原文地址:https://www.cnblogs.com/lishuntao/p/11918383.html
Copyright © 2020-2023  润新知