2

我正在为我的django项目使用django-social-auth进行谷歌应用程序身份验证。我从Google api控制台为我的域获得了客户端ID和密钥。而在我的应用程序中的值插入如下:Django OAuth2错误:当client_id被提供时,invalid_client和client_id = None

**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中看到的)说它没有被提供。如果我手动插入网址,我会重定向到权限页面。

另外,当我接受权限时,我得到一个AuthCanceled at/complete/google-oauth2/错误。是否我的项目没有正确读取social_auth设置?

任何帮助,将不胜感激。谢谢。

回答

7

我有同样的问题,只是在settings.py文件更改

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

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

相关问题