2014-12-19 76 views
0

之前,我在本地服務器上處理我的Django應用程序,並且所有設置都與django-allauth配合使用(我使用manage.py runserver而不是nginx + gunicorn進行分段/製作)無法使用django-allauth在Facebook上登錄

現在,我在我的暫存網站上實現了django-allauth,但是我無法在我的臨時服務器上使用它(注意:在此示例中,我已將我的域名替換爲mydomain.com)。

基本上在我點擊了http://staging.mydomain.com/accounts/login/與Facebook登錄的鏈接,它重定向到https://www.facebook.com/dialog/oauth?response_type=code&state=YXdAxg2WiIBo&redirect_uri=http%3A%2F%2Fstaging.mydomain.com%2Faccounts%2Ffacebook%2Flogin%2Fcallback%2F&client_id=1600059933550804&scope=email&auth_type=reauthenticate,我得到了以下錯誤:

給定的URL不會被應用程序配置:一個或多個 允許給定的URL不被應用程序的設置所允許。必須 與網站網址或Canvas網址相符,或者該網域必須是其中一個應用網域的子域 。

這裏是我的設置文件:

的nginx的conf文件

server { 
    listen 80; 
    server_name staging.mydomain.me; 

    location /static { 
      alias /home/myusername/sites/staging.mydomain.me/static; 
    } 

    location/{ 
      proxy_set_header Host $host; 
      proxy_pass http://unix:/tmp/staging.mydomain.me.socket; 
    } 
} 

settings.py

... 

SITE_ID = 1 

LOGIN_REDIRECT_URL = '/' 
ACCOUNT_EMAIL_REQUIRED = True 
SOCIALACCOUNT_PROVIDERS = { 
    'facebook': { 
     'SCOPE': ['email'], 
     'AUTH_PARAMS': {'auth_type': 'reauthenticate'}, 
     'METHOD': 'oauth2', 
     'VERIFIED_EMAIL': False, 
    } 
} 

AUTH_USER_MODEL = 'users.User' 
ACCOUNT_ADAPTER = 'users.adapters.AccountAdapter' 
ACCOUNT_SIGNUP_FORM_CLASS = 'users.forms.UserApplicationForm' 
ACCOUNT_LOGOUT_ON_GET = True 

... 

設置在Facebook應用程序

Facebook settings

設置在站點[http://staging.mydomain.com/admin/sites/site/1/]

Django Sites settings

設置在社會中的應用[http://staging.mydomain.com/admin/socialaccount/socialapp/2/]

Django-allauth social app settings

回答

0

嘗試的theese兩兩件事之一:

  1. 創建Facebook應用程序測試的應用程序,並設置staging.mydomain.com域吧,用新的API密鑰配置一個全新的社交應用程序(allauth)和祕密(爲您的新測試應用程序),一個新的Django網站,等等...
  2. 更改您的Facebook應用程序設置,使其staging.mydomain.com作爲其應用程序域。

我認爲這兩種解決方案都可以工作,但我更喜歡第一種解決方案,因爲您的臨時應用完全符合'測試應用'的定義,因此我認爲這是一個更優雅的解決方案。

希望這可以幫助你。