簡體   English   中英

python flask:將響應從FB API調用傳遞到后端

[英]python flask: pass response from a FB API call to back-end

我正在將JavaScript JavaScript Facebook SDK集成到我的Python Flask Web應用程序中。 我希望能夠訪問已登錄用戶的Facebook ID服務器端。

我當前的方法是構建一個包含隱藏輸入的表單,該表單存儲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存儲在flask 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的參數,描述為:“表明是否為會話創建cookie。如果啟用,則可以由服務器端代碼訪問”。 我很確定不能在客戶端修改flask會話對象(理應如此),但是也許可以在我的python代碼中在服務器端評估這個單獨的cookie?

您可以將用戶的fb_id設置為會話cookie並在服務器端訪問它。 這可以通過fb_id = request.cookies.get('COOKIE_NAME')

登錄/注銷后決定對燒瓶應用程序使用GET或POST請求。 創建表格完全沒有必要,而且過於復雜。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM