2013年1月20日日曜日

Djangoで、django-social-authを利用して、ソーシャルアカウントログイン

Django(1.4.2)で、django-social-authを利用して、ソーシャルアカウントログインです。taichino.comさんのページを参考にして、設定させていただきました。拍子抜けするほど、簡単に設定出来ます。先日より設定していた、Twitter+tweepyの苦労は何だったのでしょう(笑)。

対応しているソーシャルサービス
OAuth
OpenId
Angel List
Behance
Bitbucket
BrowserID
DISQUS
Douban
Douban OAuth
Douban OAuth2
Dropbox
Evernote OAuth
Facebook
Flickr
GitHub
Google
Google OAuth
Google OAuth2
Google OpenID
Orkut
Instagram
LinkedIn
MSN Live Connect
Mail.ru OAuth
Mixcloud OAuth2
Odnoklassniki.ru
OAuth
IFrame applications
Readability
Shopify
Skyrock
SoundCloud
StockTwits
Stripe
TripIt
twilio-backend
Twitter
VKontakte
OAuth2
OpenAPI
Weibo OAuth
Yahoo OAuth
インストール
pip install django-social-auth
python manage.py syncdb
settings.pyに、設定追加
TEMPLATE_CONTEXT_PROCESSORS = (
    'social_auth.context_processors.social_auth_by_name_backends',
    'social_auth.context_processors.social_auth_backends',
    'social_auth.context_processors.social_auth_by_type_backends',
    'social_auth.context_processors.social_auth_login_redirect',
)

INSTALLED_APPS = (
    'social_auth'
)

AUTHENTICATION_BACKENDS = (
    'social_auth.backends.twitter.TwitterBackend',
    'social_auth.backends.facebook.FacebookBackend',
    'social_auth.backends.google.GoogleOAuthBackend',
    'social_auth.backends.google.GoogleOAuth2Backend',
    'social_auth.backends.google.GoogleBackend',
    'social_auth.backends.yahoo.YahooBackend',
    'social_auth.backends.browserid.BrowserIDBackend',
    'social_auth.backends.contrib.linkedin.LinkedinBackend',
    'social_auth.backends.contrib.disqus.DisqusBackend',
    'social_auth.backends.contrib.livejournal.LiveJournalBackend',
    'social_auth.backends.contrib.orkut.OrkutBackend',
    'social_auth.backends.contrib.foursquare.FoursquareBackend',
    'social_auth.backends.contrib.github.GithubBackend',
    'social_auth.backends.contrib.vkontakte.VKontakteBackend',
    'social_auth.backends.contrib.live.LiveBackend',
    'social_auth.backends.contrib.skyrock.SkyrockBackend',
    'social_auth.backends.contrib.yahoo.YahooOAuthBackend',
    'social_auth.backends.contrib.readability.ReadabilityBackend',
    'social_auth.backends.OpenIDBackend',
    'django.contrib.auth.backends.ModelBackend',
)

TWITTER_CONSUMER_KEY         = ''
TWITTER_CONSUMER_SECRET      = ''
FACEBOOK_APP_ID              = ''
FACEBOOK_API_SECRET          = ''
LINKEDIN_CONSUMER_KEY        = ''
LINKEDIN_CONSUMER_SECRET     = ''
ORKUT_CONSUMER_KEY           = ''
ORKUT_CONSUMER_SECRET        = ''
GOOGLE_CONSUMER_KEY          = ''
GOOGLE_CONSUMER_SECRET       = ''
GOOGLE_OAUTH2_CLIENT_ID      = ''
GOOGLE_OAUTH2_CLIENT_SECRET  = ''
FOURSQUARE_CONSUMER_KEY      = ''
FOURSQUARE_CONSUMER_SECRET   = ''
VK_APP_ID                    = ''
VK_API_SECRET                = ''
LIVE_CLIENT_ID               = ''
LIVE_CLIENT_SECRET           = ''
SKYROCK_CONSUMER_KEY         = ''
SKYROCK_CONSUMER_SECRET      = ''
YAHOO_CONSUMER_KEY           = ''
YAHOO_CONSUMER_SECRET        = ''
READABILITY_CONSUMER_SECRET  = ''
READABILITY_CONSUMER_SECRET  = ''

LOGIN_URL          = '/login-form/'
LOGIN_REDIRECT_URL = '/logged-in/'
LOGIN_ERROR_URL    = '/login-error/'
urls.py
urlpatterns = patterns('',
    url(r'', include('social_auth.urls')),
)
/templates/index.html
<a href="{% url socialauth_begin 'twitter' %}?{{ redirect_querystring }}">...</a>
syncdb後、データベース内にの3つのテーブル(social_auth_association、social_auth_nonce、social_auth_usersocialauth)が出来がっています。今回試したのは、Twitterアカウントのみですが、ログインすると、ユーザーテーブル(auth_user)にもデータ登録され、ユーザー管理されるようになります。ユーザー登録したくない場合は、「SOCIAL_AUTH_CREATE_USERS = False」と設定すると良いらしい。詳しい設定項目の数々は、こちら。細かく動きを制御できるようになっています。とにかく素晴らしいの一言。

実際に設定してみたサイトがこちら



参考サイト
Django Social Auth documentation
Djangoでソーシャルアカウントを扱う(taichino.comさん)

0 件のコメント:

コメントを投稿