2016-11-16 17 views
1

Django All-AuthのFacebookソーシャル統合の設定に問題があります。私は正常にGoogleのログインを設定しているので、私はなぜ1つが動作し、もう1つは動作しないのかについて迷っています。私はFacebookが多くの可能なオプションを持っているので、それがsettings.pyの私のFacebookの設定のせいかもしれないと思う。Django All-Auth Facebookインテグレーション

イベント概要:私のウェブサイト上でFacebookのボタンで

  • [ログイン]をクリックして
  • ブラウザは、ログインのためのFacebookのウェブサイトにリダイレクトし、そしてFacebookはパスワードを要求します。
  • パスワードを受け入れる
  • ブラウザは私のウェブサイトにリダイレクトされますが、「ソーシャルネットワークログインの失敗、ソーシャルネットワークアカウント経由でログインしようとしてエラーが発生しました」というエラーが表示されます。
  • ログインは

私は正確に問題の原因を診断することができますどのように任意のアイデアを失敗しましたか?

例のウェブホストメッセージ:

[16/Nov/2016 02:14:37] "GET /accounts/facebook/login/callback/?code=AQArXlYq-4K8 
UBnuACFQZK39HvVAkZzYpnkP4hI223Y5kA1JmmjdF5yOeVHnrDRpxMOPFNviDzYeSSBvWccALZHGTl-8 
7_A1-jtwpDF0UdgoGSVVd9KsrGrQDrHi0i6X9l_pO76-_Ro0N8ePr4L7uUd2G3aWAlZVtAKNNPG1kNBf 
OIwhb_RFRJrFvdLA5TlUXaGFdkEsRdMawyG8tdAstXdm5FcxKBRYMOE98j3yalHm5oLLeXOMKJ14EdDw 
8-DHU6f5Ze1DWaWWUd-3MFP-NvF2sG4XbA6n5McPrLgYZKb_YG8Slqgo5GDVrKHT1tNedzgceCjjDXT3 
TfbzZc9e-aQT9EycKAdGDr1TkKw9lO-Lqw&state=5WqSSFEKy5bc HTTP/1.1" 200 8243 

例URLのFacebookからの復帰後:

http://127.0.0.1:8000/accounts/facebook/login/callback/?code=AQArXlYq-4K8UBnuACFQZK39HvVAkZzYpnkP4hI223Y5kA1JmmjdF5yOeVHnrDRpxMOPFNviDzYeSSBvWccALZHGTl-87_A1-jtwpDF0UdgoGSVVd9KsrGrQDrHi0i6X9l_pO76-_Ro0N8ePr4L7uUd2G3aWAlZVtAKNNPG1kNBfOIwhb_RFRJrFvdLA5TlUXaGFdkEsRdMawyG8tdAstXdm5FcxKBRYMOE98j3yalHm5oLLeXOMKJ14EdDw8-DHU6f5Ze1DWaWWUd-3MFP-NvF2sG4XbA6n5McPrLgYZKb_YG8Slqgo5GDVrKHT1tNedzgceCjjDXT3TfbzZc9e-aQT9EycKAdGDr1TkKw9lO-Lqw&state=5WqSSFEKy5bc#_=_ 

Facebookの有効なOAuthのリダイレクトURI:

Facebookのセッティング:

  • クライアントのOAuthログイン -

管理者設定を有効 -

  • 組み込みブラウザのOAuthログインを有効 - ウェブのOAuthログイン
  • 有効:

    • クライアントID、シークレットIDの入力
    • サイトはlocalhost

    Settings.pyアプリとして1セット:

    INSTALLED_APPS = [ 
        'home', 
    
        # Django Standard Apps 
        'django.contrib.admin', 
        'django.contrib.auth', 
        'django.contrib.contenttypes', 
        'django.contrib.sessions', 
        'django.contrib.messages', 
        'django.contrib.staticfiles', 
    
        # Django Crispy forms 
        'crispy_forms', 
    
        # Django allauth 
        'django.contrib.sites', 
        'allauth', 
        'allauth.account', 
        'allauth.socialaccount', 
        'allauth.socialaccount.providers.facebook', 
        'allauth.socialaccount.providers.google', 
    ] 
    

    Settings.py社会:

    SOCIALACCOUNT_PROVIDERS = \ 
        { 
        'facebook': 
        {'METHOD': 'oauth2', 
        'SCOPE': ['email', 'public_profile'], 
        'AUTH_PARAMS': {'auth_type': 'reauthenticate'}, 
        #'FIELDS': [ 
        #'id', 
        #'email', 
        #'name', 
        #'first_name', 
        #'last_name', 
        #'verified', 
        #'locale', 
        #'timezone', 
        #'link', 
        #'gender', 
        #'updated_time'], 
        'EXCHANGE_TOKEN': True, 
        #'LOCALE_FUNC': 'path.to.callable', 
        'VERIFIED_EMAIL': False, 
        'VERSION': 'v2.4'}, 
    
        'google': 
        { 'SCOPE': ['profile', 'email'], 
        'AUTH_PARAMS': { 'access_type': 'online' } } 
        } 
    

    異なるリダイレクトURIを使用してこの構成をSSLを使用したテストサーバーにアップロードしましたが、それでも同じ問題があります。どのように私はこれを修正することができる任意のアイデア?

    私はPython 3.5.2を実行しており、最新のpipはall-auth用にインストールされています。

    おかげ スティーブン

  • 答えて

    0

    私はしばらくの間、これを戦っていました。

    私にとってのトリックは、Django-allauthの "クライアント"コードがFacebookの "appid"である必要があり、ではなく、 Facebookの "クライアント"です。

    Djangoの管理領域を使用してFacebookのクライアントをappidに変更したとき(またはデータベースを編集できるとき)に問題が解決されました。

    +0

    ご意見ありがとうございます。私はFacebookのアプリを再作成し、設定を入力し、それは突然働き始めた。 – Stephen

    関連する問題