Django=ウェブサイトにGoogle+ APIサインインを追加するにはどうすればよいですか?
まず、OAuth Google+の認証情報を作成する必要があります。
python-social-auth
をDjangoアプリに追加しましょう。
pip
でpython-social-auth
をインストールします適切なDjango設定を設定します。
'social.apps.Django_app.default'
をINSTALLED_APPS
に追加:SOCIAL_AUTH_GOOGLE_OAUTH2_KEY
およびSOCIAL_AUTH_GOOGLE_OAUTH2_SECRET
設定を、以前に作成したクライアントキーとシークレットと共に追加します。クライアントキーは、Google開発者コンソールの「資格情報」画面にリストされている「クライアントID」で、「。apps.googleusercontent.com」で終わります。ドットの前の部分のみを取ります。シークレットは「クライアントシークレット」としてリストされます。AUTHENTICATION_BACKENDS
設定が明示的に定義されており、'social.backends.google.GoogleOAuth2'
が含まれていることを確認してください。例は次のとおりです。
AUTHENTICATION_BACKENDS = (
'social.backends.google.GoogleOAuth2',
'Django.contrib.auth.backends.ModelBackend')
python-social-authドキュメンテーション で詳述されているようにSOCIAL_AUTH_PIPELINE
設定を定義します。すべての設定が行うことは、そのページにリストされています。
Google+から取得した情報と関係がある場合は、関数を定義することをお勧めします。
def save_profile(backend, user, response, *args, **kwargs):
if backend.name == "google-oauth2":
# do something
ここで、user
はDjango.contrib.auth.models.User
オブジェクトであり、response
は辞書です。次に、SOCIAL_AUTH_PIPELINE
の後に完全なモジュールパスを使用して、その関数をcreate_user
に追加します。
その情報で何もしたくない場合は、デフォルトのパイプラインをそのままにしておくことができます。
最後に、python-social-auth
URLをサイトのurlpatterns
に追加します。
from Django.conf.urls import include
url("^soc/", include("social.apps.Django_app.urls", namespace="social"))
そして、それはそれを行う必要があります!テストの時間です。最初に、./manage.py makemigrations
の必要な移行のためにpython-social-auth
を、次に here のように./manage.py migrate
を使用します。次に、開発サーバーを実行して、 http:// localhost:8000/soc/login/google-oauth2 /?next = / に移動します。 。
うまくいけば、どのステップの説明も省略せずに機能します。さらに質問をして、 ドキュメントを読んでください 。また、こちらは の動作例 で、チェックアウトする必要があります。
@ rhaps0dy の答えは正しいですが、_python-social-auth
_は廃止され、_social-auth-app-Django
_として移行されます。ですから、これが @ rhaps0dy ガイドラインとは異なるものになりました。
python-social-auth
_の代わりに、_social-auth-app-Django
_をインストールしました。'social.apps.Django_app.default'
_は_'social_Django'
_になります'social.backends.google.GoogleOAuth2'
_が_'social_core.backends.google.GoogleOAuth2'
_になりましたurl("^soc/", include("social.apps.Django_app.urls", namespace="social"))
はurl("^soc/", include("social_Django.urls", namespace="social"))
になります