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/'
登陆成功。