主要翻译自https://django-social-auth.readthedocs.org/en/latest/index.html,适当地方加上自己的理解,有的地方有增删。
第一步:安装依赖
pip install django-social-auth
(或者采用easy_install安装,或者clone之后配置/setup)参见https://django-social-auth.readthedocs.org/en/latest/installing.html#get-a-copy
安装之后,进行完必要的settings配置之后run server,你会发现有错误!wtf,原来是一并安装的最新版python-social-auth对不上。
git checkout tags/v0.1.9
sudo python setup.py install
取出这个版本之后,安装,and voila!
第二步,配置
在settings.py中加入
INSTALLED_APPS = (
...
'social_auth'
)
加入后,同步数据库。(social_auth本身自带了一些models)
./manage.py syncdb
然后再加上要支持的第三方网站
AUTHENTICATION_BACKENDS = (
'social_auth.backends.twitter.TwitterBackend',
'social_auth.backends.facebook.FacebookBackend',
'social_auth.backends.contrib.douban.Douban2Backend',
'social_auth.backends.contrib.qq.QQBackend',
'social_auth.backends.contrib.weibo.WeiboBackend',
#注意,这里的QQ可能还有点问题,待会再说。参见⬇️
#http://segmentfault.com/blog/duoduo3_69/1190000000635319
'django.contrib.auth.backends.ModelBackend',
)
上面的最后一句不要丢了谢谢。
然后!再urls文件中加入
urlpatterns = patterns('',
...
url(r'', include('social_auth.urls')),
)
然后!就是去第三方网站申请key和secret了。然后填进来(settings.py)
TWITTER_CONSUMER_KEY = ''
TWITTER_CONSUMER_SECRET = ''
然后写上重定向的URL(settings.py)
LOGIN_URL = '/login-form/'
LOGIN_REDIRECT_URL = '/logged-in/'
LOGIN_ERROR_URL = '/login-error/'
如果需要定制跳转链接,那么必须跟LOGIN_URL不同:
SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/another-login-url/'
新注册的用户跳转链接可以这么定义
SOCIAL_AUTH_NEW_USER_REDIRECT_URL = '/new-users-redirect-url/'
新关联的用户可以这么定义:
SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL = '/new-association-redirect-url/'
账户断开连接:
SOCIAL_AUTH_DISCONNECT_REDIRECT_URL = '/account-disconnected-redirect-url/'
用户取消某个关联之后,跳转如下:
SOCIAL_AUTH_BACKEND_ERROR_URL = '/new-error-url/'
验证和关联账户的跳转地址写长点,可以防止冲突:
SOCIAL_AUTH_COMPLETE_URL_NAME = 'socialauth_complete'
SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'socialauth_associate_complete'
若定义了inactive,那么这类用户可以做如下跳转:
SOCIAL_AUTH_INACTIVE_USER_URL = '...'#默认执行LOGIN_ERROR_URL
然后!如果要覆盖原来的user model,那么要先申明一下:
SOCIAL_AUTH_USER_MODEL = 'myapp.CustomUser'
有的数据库会强加一个字段值的限制,这个条件有可能会影响UserSocialAuth字段:
SOCIAL_AUTH_UID_LENGTH = <int>
<int>改为233(mysql),或者767(InnoDB)
Association and Nonce keys:(这部分不懂)
其他的配置不是很重要。如有需要请查询官方文档,(在最上面贴出了),或者看不懂的留言告诉我。