2

Я использую django-social-auth для аутентификации Google Apps для моего проекта django. Я получил идентификатор клиента и секретный ключ из консоли Google api для своего домена. И подключен к значениям в мое приложение следующим образом:Django OAuth2 Ошибка: invalid_client и client_id = Нет, когда client_id был предоставлен

**settings.py** 

     MIDDLEWARE_CLASSES = (
     'social_auth.middleware.SocialAuthExceptionMiddleware', 
    ) 

    LOGIN_URL = '/login/google-oauth2/' 
    LOGIN_REDIRECT_URL = '/profile' 
    LOGIN_ERROR_URL = '/login-error/' 

    AUTHENTICATION_BACKENDS = (
     'social_auth.backends.google.GoogleOAuth2Backend', 
     'django.contrib.auth.backends.ModelBackend', 
    ) 

    TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth", 
    "social_auth.context_processors.social_auth_by_type_backends", 
    ) 

    SOCIAL_AUTH_ENABLED_BACKENDS = ('google',) 
    SOCIAL_AUTH_DEFAULT_USERNAME = 'new_social_auth_user' 

    GOOGLE_OAUTH2_CLIENT_ID = '***.apps.googleusercontent.com' 
    GOOGLE_OAUTH2_CLIENT_SECRET = '****' 
    GOOGLE_WHITE_LISTED_DOMAINS = ['127.0.0.1:8000'] 

    SOCIAL_AUTH_COMPLETE_URL_NAME = 'socialauth_complete' 
    SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'socialauth_associate_complete' 
    SOCIAL_AUTH_RAISE_EXCEPTIONS = False 
    SOCIAL_AUTH_PROCESS_EXCEPTIONS = 'social_auth.utils.log_exceptions_to_messages' 

    INSTALLED_APPS = (
      'social_auth',) 

...

**urls.py** 

    from django.conf.urls import patterns, include, url 
    from django.contrib import admin 
    from django.views.generic import TemplateView 
    from django.contrib.auth.views import logout 
    admin.autodiscover() 

    urlpatterns = patterns('', 

    url(r'^admin/', include(admin.site.urls)), 
    url(r'', include('social_auth.urls')), 
    url(r'^$', TemplateView.as_view(template_name="login.html")),     
    url(r'^logout/$', logout, {'next_page': '/'}, name='gauth_logout'), 
    url(r'^profile/$', TemplateView.as_view(template_name="profile.html")), 
    ) 

...

 **login.html** 

    <p>Use your work email credentials to sign in to this application: 
    <a href="{% url 'socialauth_begin' 'google-oauth2' %}">Sign In</a> 
     </p> 

Проблема заключается в том, что при нажатии на знак в Я перенаправлен на страницу с ошибкой: Invalid_client с деталями:

 Request Details 
     cookie_policy_enforce=false 
     scope=https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile 
     response_type=code 
     redirect_uri=http://127.0.0.1:8000/complete/google-oauth2/ 
     state=WZWyJgDRfeW4RneRynqSZ3nSy0Bzs0v6 
     client_id=None 

https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/userinfo.email+https://www.googleapis.com/auth/userinfo.profile&state=WZWyJgDRfeW4RneRynqSZ3nSy0Bzs0v6&redirect_uri=http://127.0.0.1:8000/complete/google-oauth2/&response_type=code&client_id=None

Несмотря на то, что в моем проекте был указан правильный client_id, страница (и, как видно из URL-адреса) говорит, что она не была предоставлена. Если я подключу его вручную в URL-адресе, я перенаправлен на страницу разрешений.

Также, когда я принимаю разрешения, я получаю сообщение об ошибке с автоответчиком в/complete/google-oauth2/. Является ли это тем, что мой проект не правильно читает параметры social_auth?

Любая помощь будет оценена по достоинству. Благодарю.

ответ

7

я была такая же проблема просто изменить

GOOGLE_OAUTH2_CLIENT_ID = '***.apps.googleusercontent.com' 
GOOGLE_OAUTH2_CLIENT_SECRET = '****' 

К

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '****.apps.googleusercontent.com' 
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET ='****' 

в файле settings.py