django-socialregistration : ちょっと触ってみた

pipでvirtualenvに入れる。

(social)hdknr@deblen2010:~/.ve/social$ pip install -e git+http://github.com/flashingpumpkin/django-socialregistration.git#egg=django-socialregistration
Obtaining django-socialregistration from git+http://github.com/flashingpumpkin/django-socialregistration.git#egg=django-

socialregistration
  Cloning http://github.com/flashingpumpkin/django-socialregistration.git to ./src/django-socialregistration
  Running setup.py egg_info for package django-socialregistration
Requirement already satisfied (use –upgrade to upgrade): setuptools in ./lib/python2.5/site-packages/setuptools-0.6c11- py2.5.egg (from django-socialregistration)
Requirement already satisfied (use –upgrade to upgrade): django in ./lib/python2.5/site-packages (from django-socialregistration)
Downloading/unpacking oauth (from django-socialregistration)
  Downloading oauth-1.0.1.tar.gz
  Running setup.py egg_info for package oauth
Downloading/unpacking python-openid (from django-socialregistration)
  Downloading python-openid-2.2.4.tar.gz (409Kb): 409Kb downloaded
  Running setup.py egg_info for package python-openid
Installing collected packages: django-socialregistration, oauth, python-openid
  Running setup.py develop for django-socialregistration
    Creating /home/hdknr/.ve/social/lib/python2.5/site-packages/django-socialregistration.egg-link (link to .)
    Adding django-socialregistration 0.2 to easy-install.pth file     Installed /home/hdknr/.ve/social/src/django-socialregistration
  Running setup.py install for oauth
  Running setup.py install for python-openid
Successfully installed django-socialregistration oauth python-openid

レポジトリ準備

(social)hdknr@deblen2010:~/.ve/social$ mkdir repos
(social)hdknr@deblen2010:~/.ve/social$ cd repos/
(social)hdknr@deblen2010:~/.ve/social/repos$ svnadmin create –fs-type fsfs socio
(social)hdknr@deblen2010:~/.ve/social/repos$ cd ..

Django プロジェクト socio を作る

(social)hdknr@deblen2010:~/.ve/social$ mkdir -p src/socio/www
(social)hdknr@deblen2010:~/.ve/social$ cd src/socio/www/

(social)hdknr@deblen2010:~/.ve/social/src/socio/www$ django-admin.py startproject website
(social)hdknr@deblen2010:~/.ve/social/src/socio/www$ svn mkdir file:///home/hdknr/.ve/social/repos/socio/trunk -m "trunk created"

リビジョン 1 をコミットしました。

(social)hdknr@deblen2010:~/.ve/social/src/socio/www$ svn co file:///home/hdknr/.ve/social/repos/socio/trunk
リビジョン 1 をチェックアウトしました。
(social)hdknr@deblen2010:~/.ve/social/src/socio/www$ mv trunk/.svn/ website
(social)hdknr@deblen2010:~/.ve/social/src/socio/www$ rm -rf trunk/
(social)hdknr@deblen2010:~/.ve/social/src/socio/www$ cd website
(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ vi .svnignore
(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ cat .svnignore
*.pyc
(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ svn add *
A         __init__.py
A         manage.py
A         settings.py
A         urls.py
(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ svn add .svnignore
A         .svnignore
(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ svn propset svn:ignore -F .svnignore  .
属性 ‘svn:ignore’ を ‘.’ に設定しました

(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ svn commit -m "Just started a Django project"
送信しています              .
追加しています              .svnignore
追加しています              __init__.py
追加しています              manage.py
追加しています              settings.py
追加しています              urls.py
ファイルのデータを送信しています …..
リビジョン 2 をコミットしました。

MySQL データベースを準備

(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ ~/bin/MySQL/createdb.sh  socio
Distribution is Debian.
Apache is apache2.
SERVER=localhost DATABASE=socio DBUSER=socio DBPWD=socio
socio

urls.py を編集

(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ vi urls.py
(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ svn commit urls.py -m "urls.py server a default document"
送信しています              urls.py
ファイルのデータを送信しています .
リビジョン 3 をコミットしました。

(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ svn diff –new=@3 –old=@2
Index: urls.py
===================================================================
— urls.py     (リビジョン 2)
+++ urls.py     (リビジョン 3)
@@ -1,9 +1,20 @@
from django.conf.urls.defaults import *

-# Uncomment the next two lines to enable the admin:
-# from django.contrib import admin
-# admin.autodiscover()
+from django.contrib import admin
+admin.autodiscover()

+
+def default(request):
+    from django import template
+    from django.http import HttpResponse
+    import os
+    return HttpResponse(
+         template.Template("""
+          <html><head><title>Sample</title></head>
+          <body> <h1> hello </h1> My name is {{ name }}.
+          """
+          ).render( template.Context({’name’:’hdknr.com’,})))
+
urlpatterns = patterns(”,
     # Example:
     # (r’^website/’, include(‘website.foo.urls’)),
@@ -13,5 +24,6 @@
     # (r’^admin/doc/’, include(‘django.contrib.admindocs.urls’)),

     # Uncomment the next line to enable the admin:
–    # (r’^admin/’, include(admin.site.urls)),
+    (r’^admin/’, include(admin.site.urls)),
+    (r”,   default),
)

settings.py を編集

(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ vi settings.py
(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ svn commit settings.py -m "configure databases , admin UI and

socialregistration"
送信しています              settings.py
ファイルのデータを送信しています .
リビジョン 4 をコミットしました。

(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ svn diff –new=@4 –old=@3
Index: settings.py
===================================================================
— settings.py (リビジョン 3)
+++ settings.py (リビジョン 4)
@@ -9,10 +9,10 @@

MANAGERS = ADMINS

-DATABASE_ENGINE = ”           # ‘postgresql_psycopg2’, ‘postgresql’, ‘mysql’, ‘sqlite3’ or ‘oracle’.
-DATABASE_NAME = ”             # Or path to database file if using sqlite3.
-DATABASE_USER = ”             # Not used with sqlite3.
-DATABASE_PASSWORD = ”         # Not used with sqlite3.
+DATABASE_ENGINE = ‘mysql’           # ‘postgresql_psycopg2’, ‘postgresql’, ‘mysql’, ‘sqlite3’ or ‘oracle’.
+DATABASE_NAME = ‘socio’             # Or path to database file if using sqlite3.
+DATABASE_USER = ‘socio’             # Not used with sqlite3.
+DATABASE_PASSWORD = ‘socio’         # Not used with sqlite3.
DATABASE_HOST = ”             # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ”             # Set to empty string for default. Not used with sqlite3.

@@ -21,11 +21,11 @@
# although not all choices may be available on all operating systems.
# If running in a Windows environment this must be set to the same as your
# system time zone.
-TIME_ZONE = ‘America/Chicago’
+TIME_ZONE = ‘Asia/Tokyo’

# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
-LANGUAGE_CODE = ‘en-us’
+LANGUAGE_CODE = ‘ja-jp’

SITE_ID = 1

@@ -48,7 +48,7 @@
ADMIN_MEDIA_PREFIX = ‘/media/’

# Make this unique, and don’t share it with anybody.
-SECRET_KEY = ‘=i^@55ni=a^20_5iizt*q*!9d%fg$-z*hy2r$%*1rh*%hjr1ba’
+SECRET_KEY = ‘3%(e6nvfh56028a#e)1o*5c*=ybgcd#evd+p4k98=za6v@=b9i’

# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
@@ -76,4 +76,6 @@
     ‘django.contrib.contenttypes’,
     ‘django.contrib.sessions’,
     ‘django.contrib.sites’,
+    ‘django.contrib.admin’,
+    ‘socialregistration’,
)

syncdbでデータベース初期化

(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ python manage.py syncdb
Creating table auth_permission
Creating table auth_group
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table django_admin_log
Creating table socialregistration_facebookprofile
Creating table socialregistration_twitterprofile
Creating table socialregistration_friendfeedprofile
Creating table socialregistration_openidprofile
Creating table socialregistration_openidstore
Creating table socialregistration_openidnonce

You just installed Django’s auth system, which means you don’t have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (Leave blank to use ‘hdknr’):
E-mail address: hoge@hoge.deb
Password:
Password (again):
Superuser created successfully.
Installing index for auth.Permission model
Installing index for auth.Message model
Installing index for admin.LogEntry model
Installing index for socialregistration.FacebookProfile model
Installing index for socialregistration.TwitterProfile model
Installing index for socialregistration.FriendFeedProfile model
Installing index for socialregistration.OpenIDProfile model
Installing index for socialregistration.OpenIDStore model

最初の動作確認

(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ python manage.py runserver 0.0.0.0:8000
Validating models…
0 errors found

Django version 1.1.1, using settings ‘website.settings’
Development server is running at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

WS000040 

WS000041 \

Twitter/OAuth情報

https://twitter.com/oauth_clients/

image

(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ vi settings.py
(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ svn diff
Index: settings.py
===================================================================
— settings.py (リビジョン 4)
+++ settings.py (作業コピー)
@@ -79,3 +79,10 @@
     ‘django.contrib.admin’,
     ‘socialregistration’,
)
+
+
+TWITTER_CONSUMER_KEY =’******************’
+TWITTER_CONSUMER_SECRET_KEY =’******************************’
+TWITTER_REQUEST_TOKEN_URL =’https://twitter.com/oauth/request_token’
+TWITTER_ACCESS_TOKEN_URL =’https://twitter.com/oauth/access_token’
+TWITTER_AUTHORIZATION_URL =’https://twitter.com/oauth/authorize’

(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ svn commit -m "Twitter OAuth info"
送信しています              settings.py
ファイルのデータを送信しています .
リビジョン 5 をコミットしました。

認証バックエンド追加

(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ vi settings.py
(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ svn diff
Index: settings.py
===================================================================
— settings.py (リビジョン 5)
+++ settings.py (作業コピー)
@@ -80,9 +80,15 @@
     ‘socialregistration’,
)

+#
+AUTHENTICATION_BACKENDS =(
+    ‘socialregistration.auth.TwitterAuth’,
+)

(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ svn commit -m "Twiter authentication backend"
送信しています              settings.py
ファイルのデータを送信しています .
リビジョン 6 をコミットしました。

socialregistrationのurls.pyをインクルード

(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ vi urls.py
(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ svn diff
Index: urls.py
===================================================================
— urls.py     (リビジョン 3)
+++ urls.py     (作業コピー)
@@ -4,6 +4,8 @@
admin.autodiscover()

+from socialregistration import urls as social_urls
+
def default(request):
     from django import template
     from django.http import HttpResponse
@@ -25,5 +27,6 @@

     # Uncomment the next line to enable the admin:
     (r’^admin/’, include(admin.site.urls)),
+    (r’^social/’, include(social_urls)),
     (r”,   default),
)

(social)hdknr@deblen2010:~/.ve/social/src/socio/www/website$ svn commit -m "socialregistration.urls included "
送信しています              urls.py
ファイルのデータを送信しています .
リビジョン 7 をコミットしました。

 

テスト実行

http://socio.deb:8000/social/

WS000044 

http://socio.deb:8000/social/twitter/

WS000045

http://socio.deb:8000/social/twitter/redirect/

 

WS000046 

WS000047

戻りを http://socio.deb:8000/social/twitter/callback/ に変更

もっかい http://socio.deb:8000/social/twitter/redirect/ から

WS000048

戻ってきた。

WS000049

ユーザー情報を入れたら、

WS000050 

エラー。

WS000051

データベースを初期化してもう一回やってみたらできた。原因不明。Adminでログインもできなかった。

 

WS000052

管理画面で確認。

 

WS000053

TwitterIDが返ってきていた。

WS000054

カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中