2017-10-31 22 views
0

私はFlaskアプリケーションにFacebookを統合しようとしています。 Facebook SDK for JavaScriptはシームレスで使いやすいです。しかし、データサーバー側を渡すのに問題があります(本当に必要なのは、ユーザーのFacebook IDです)。ここに私のベアボーンフラスコアプリです:FlaskでCookieが設定されていません

from flask import Flask, render_template, session, request, redirect, url_for 

app = Flask(__name__) 
app.config['SECRET_KEY'] = '123' 

@app.route('/') 
def index(): 
    print('cookies', request.cookies) 
    return render_template('get_fb_cookies.html') 

@app.route('/set_key') 
def set_key(): 
    session['key'] = 'value' 
    return redirect(url_for('index')) 

if __name__ == '__main__': 
    app.run(debug=True) 

そして、ここでは、ユーザがクライアント側/ログインログアウト(およびFacebookのAPIの様々な他の部分を利用)することができます私のベアボーンテンプレートです。これを読ん

<!doctype html> 
<html lang="en"> 
<body> 
    <script> 
    window.fbAsyncInit = function() { 
     FB.init({ 
     appId  : '<app-id>', 
     cookies : true, 
     version : 'v2.10' // use graph api version 2.10 
     }); 
     FB.getLoginStatus(function(response) { 
     statusChangeCallback(response); 
     }); 
    }; 

    // Load the SDK asynchronously 
    (function(d, s, id) { 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (d.getElementById(id)) return; 
     js = d.createElement(s); js.id = id; 
     js.src = "//connect.facebook.net/en_US/sdk.js"; // minified version version 
     fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

    // This is called with the results from from FB.getLoginStatus(). 
    function statusChangeCallback(response) { 
     if (response.status === 'connected') { 
     FB.api('/me', function(response){ 
      console.log('Successful login for: ' + response.name); 
      console.log('ID: ' + response.id) 
     }); 
     } else { 
     console.log('Not connected.') 
     } 
    }; 
    </script> 

    <div id="fb-root"></div> 
    <h1>Get Facebook Cookies</h1> 
    <div class="fb-login-button" data-max-rows="1" data-size="medium" data-button-type="login_with" data-show-faces="false" data-auto-logout-link="true"></div> 

</body> 
</html> 

SO question、それは私がクッキーサーバー側にアクセスする必要が表示されますが、request.cookiesは私にflask.sessionによって設定されたクッキーを与えているだけです。多分、私はドメインをクッキーのfacebookセットのために変更する必要があります。現在、約10個が.facebook.comに設定されています。 localhost(または私のサーバが稼働しているところ)に設定する必要があることがわかります。

これは実現可能ですか、またはユーザーのFacebook IDサーバー側にアクセスする別のアプローチを検討する必要はありますか?

答えて

1

代わりのドメインを変更しようとすることでFBのクッキーを汚染、私はstatusChangeCallback

+0

優れたアイデアでフラスコアプリへのGETやPOSTリクエストを使用してお勧めします。ありがとうございました! –

関連する問題