一、第三方登录
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/'


登陆成功。