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 ='****' 

相關問題