繁体   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