我正在將Facebook SDK for JavaScript集成到我的Python Flask Web應用程序中。我希望能夠訪問登錄用戶的Facebook ID服務器端。python flask:將FB API調用的響應傳遞到後端
我目前的做法是建立一個形式含有一個隱藏的輸入,其存儲的ID,並將其提交時在用戶登錄:
<script>
function sendToBackEnd(){
FB.getLoginStatus(function(response){
if (response.status == 'connected'){
$form = $('<form>', {'action': '/process_form', 'method': 'POST'}).appendTO('body');
FB.api('/me', function(response){
$('<input>', {'class': 'hidden', 'name': 'FB_id', 'value': response.id}).appendTo($form);
});
}
});
}
</script>
<div class="fb-login-button" onlogin="sendToBackEnd"></div>
該id然後存儲在燒瓶session
對象:
@app.route('/process', methods=['GET', 'POST'])
def process():
session['FB_id'] = request.form['FB_id']
print("User's Facebook id now accessible across all routes server-side!")
return redirect(url_for('index'))
在這裏有更好的方法還是提交一個隱藏的窗體是將這些數據從客戶端傳遞到服務器端的唯一方法?
只是一個想法......我注意到有一個在FB.init()方法的參數調用cookie
這是一個描述爲,「Inidcates是否爲會話創建的cookie。如果啓用,它可以通過服務器端代碼訪問「。我很確定燒瓶會話對象不能被修改客戶端(正確如此),但也許這個單獨的cookie可以在我的python代碼服務器端進行評估?
剛剛發現這個[Facebook的SDK的Python庫](https://facebook-sdk.readthedocs.io/en/latest/index.html),這可能會有所幫助 –