質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • Django

    1604questions

    DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

  • Google API

    666questions

    Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

  • OAuth 2.0

    104questions

    OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

no such table: social_auth_usersocialauthのエラー

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 853

shirasu10fish

score 23

 前提・実現したいこと

Djangoでpython-social-authを用いてGoogle認証を実装しようとしています。
index.htmlの「Login with Google」ボタンからGoogleのログイン画面に飛び、その後のリダイレクトで次のエラーメッセージが発生しました。

 エラーメッセージ(概要)

OperationalError at /complete/google-oauth2/
no such table: social_auth_usersocialauth

 エラーメッセージ(詳細)

Environment:

Request Method: GET
Request URL: http://localhost:8000/complete/google-oauth2/?state=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Django Version: 2.0.2
Python Version: 3.5.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'social.apps.django_app.default',
 'auth0',
 'auth1']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/db/backends/utils.py" in _execute
  85.                 return self.cursor.execute(sql, params)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py" in execute
  303.         return Database.Cursor.execute(self, query, params)

The above exception (no such table: social_auth_usersocialauth) was the direct cause of the following exception:

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
  35.             response = get_response(request)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  128.                 response = self.process_exception_by_middleware(e, request)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  44.         response = view_func(request, *args, **kwargs)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/views/decorators/csrf.py" in wrapped_view
  54.         return view_func(*args, **kwargs)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/social_django/utils.py" in wrapper
  49.             return func(request, backend, *args, **kwargs)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/social_django/views.py" in complete
  33.                        *args, **kwargs)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/social_core/actions.py" in do_complete
  41.         user = backend.complete(user=user, *args, **kwargs)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/social_core/backends/base.py" in complete
  40.         return self.auth_complete(*args, **kwargs)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/social_core/utils.py" in wrapper
  252.             return func(*args, **kwargs)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/social_core/backends/oauth.py" in auth_complete
  405.                             *args, **kwargs)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/social_core/utils.py" in wrapper
  252.             return func(*args, **kwargs)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/social_core/backends/oauth.py" in do_auth
  416.         return self.strategy.authenticate(*args, **kwargs)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/social_django/strategy.py" in authenticate
  107.         return authenticate(*args, **kwargs)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/contrib/auth/__init__.py" in authenticate
  70.             user = _authenticate_with_backend(backend, backend_path, request, credentials)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/contrib/auth/__init__.py" in _authenticate_with_backend
  116.     return backend.authenticate(*args, **credentials)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/social_core/backends/base.py" in authenticate
  80.         return self.pipeline(pipeline, *args, **kwargs)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/social_core/backends/base.py" in pipeline
  83.         out = self.run_pipeline(pipeline, pipeline_index, *args, **kwargs)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/social_core/backends/base.py" in run_pipeline
  113.             result = func(*args, **out) or {}

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/social_core/pipeline/social_auth.py" in social_user
  19.     social = backend.strategy.storage.user.get_social_auth(provider, uid)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/social_django/models.py" in get_social_auth
  51.                                                           uid=uid)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/db/models/query.py" in get
  397.         num = len(clone)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/db/models/query.py" in __len__
  254.         self._fetch_all()

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/db/models/query.py" in _fetch_all
  1179.             self._result_cache = list(self._iterable_class(self))

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/db/models/query.py" in __iter__
  53.         results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/db/models/sql/compiler.py" in execute_sql
  1064.             cursor.execute(sql, params)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/db/backends/utils.py" in execute
  100.             return super().execute(sql, params)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/db/backends/utils.py" in execute
  68.         return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/db/backends/utils.py" in _execute_with_wrappers
  77.         return executor(sql, params, many, context)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/db/backends/utils.py" in _execute
  85.                 return self.cursor.execute(sql, params)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/db/utils.py" in __exit__
  89.                 raise dj_exc_value.with_traceback(traceback) from exc_value

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/db/backends/utils.py" in _execute
  85.                 return self.cursor.execute(sql, params)

File "/home/kei/.virtualenvs/nextone/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py" in execute
  303.         return Database.Cursor.execute(self, query, params)

Exception Type: OperationalError at /complete/google-oauth2/
Exception Value: no such table: social_auth_usersocialauth

 nextone/setting.py(抜粋)

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'social.apps.django_app.default',
    'auth1', #アプリ名
]

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },


AUTHENTICATION_BACKENDS = (
        'social_core.backends.google.GoogleOAuth2' ,
        'django.contrib.auth.backends.ModelBackend',
        )

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXX'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'XXXXXXXXXXXXXXXXX'

SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/'
SOCIAL_AUTH_LOGIN_URL = '/login/'

 auth1/templates/auth1/index.html 

{% extends "auth1/base.html" %}

{% block title %}ホーム{% endblock title %}

{% block content %}
<div>
  <h1>ホーム</h1>

  <p>
  <ul>
    {% if user and not user.is_anonymous %}
    <!-- TODO: ログアウト URL を表示する -->
    {% else %}
    <li>
      <a href="{% url 'social:begin' 'google-oauth2' %}?next={{ request.path }}">Login with Google</a>
    </li>
    {% endif %}
  </ul>
  </p>
</div>
{% endblock content %}

auth1/templates/auth1/base.html 

{% load staticfiles %}
<!DOCTYPE html>
<html lang="{{ LANGUAGE_CODE|default:"en-us" }}">
<head>
  <meta charset="UTF-8">
  <title>{% block title %}{% endblock %}</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  {% block extrahead %}{% endblock %}
</head>
<body>
  <div class="container">
    {% block content %}
      {{ content }}
    {% endblock %}
  </div>
</body>
</html>

 環境について

python3.5.2
pip9.0.1
ubuntu16.04 x84_64

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

Exception Type: OperationalError at /complete/google-oauth2/
Exception Value: no such table: social_auth_usersocialauth

これは social-authが必要とするテーブルが存在しないというエラーです。social-auth を Djangoで使う時は、
migrateが必要になります。

あとお使いのバージョンが多分古いです。下記URLが参考になると思います。

https://qiita.com/sapuri/items/70418a8bc45ab21de960 

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/17 08:29

    URL先の通りにアップデートをしてからmigrateを実施したところ、上手く行きました。
    ありがとうございました。

    キャンセル

同じタグがついた質問を見る

  • Django

    1604questions

    DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

  • Google API

    666questions

    Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

  • OAuth 2.0

    104questions

    OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。