javascript - GAE Python JavaScript : How to insert response data from facebook login into the datastore?

标签 javascript python google-app-engine facebook-login

所以我使用 javascript sdk 完成了 facebook 登录的链接。

<script>
  window.fbAsyncInit = function() {
    FB.init({
        appId: '{{facebook_app_id}}',
        channelUrl : '//localhost:8097/channel.html',
        status: true, 
        cookie: true,
        xfbml: true
    });

    FB.getLoginStatus(function(response) {
      if (response.status === 'connected') {
        // connected
        alert(response.authResponse.userID);
        FB.api('/me', function(response) {
                  var userInfo = document.getElementById('user-info');
                  userInfo.innerHTML = '<img src="https://graph.facebook.com/' + response.id + '/picture" style="margin-right:5px"/>' + response.name;
                alert(response.name);
                document.getElementById('fb-root').appendChild(userInfo);
                });
      } else if (response.status === 'not_authorized') {
        // not_authorized
        alert("not_authorized");
      } else {
        // not_logged_in
        alert("not_logged_in");
      }
     });

    FB.Event.subscribe('{% if current_user %}auth.logout{% else %}auth.login{% endif %}', function(response) {
      {% if current_user %} window.location = "/logout" {% else %} window.location.reload(); {% endif %}
    });
  };
  (function() {
    var e = document.createElement('script');
    e.type = 'text/javascript';
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
  }());
</script>

所以,

如何使用 JavaScript 传递参数并将数据安全地插入数据存储区。示例,响应.名称。也可以在facebook登录。我意识到他们使用 token 作为登录响应,并且它也在他们的 python facebook 示例数据存储中。不过,我创建了自己的登录系统,所以我认为我根本不需要使用该 token 。根本不使用该 token 是否有任何风险?

最佳答案

使用纯 JavaScript 来完成此操作有点困难,但您可以使用 jQuery,更具体地说是 jQuery.post 。因此,通过拥有 idname,您可以简单地将此信息发送回您的应用程序,如下所示:

$.post("/login/facebook/", { id: response.id, name: response.name })
.done(function(data) {
  alert("Data Loaded: " + data);
});

在后端,您应该有一个处理程序,它需要此类请求才能登录该 Facebook 用户。

这样做的唯一问题是,任何人都可以使用任何 ID 和名称发出此 POST 请求,而您不知道他们是真正的用户还是只是试图进入您的系统。这就是 Facebook 使用访问 token 的原因,因此您可以使用 token 应用 ID应用 key 将其发送回您的服务器code> 您可以检索实际用户。

下一步,由于您实现了自己的登录系统,因此您应该使用 session cookie 来存储有关当前登录用户的信息,以便您能够浏览该网站。尽管您自己完成这件事是非常可行的,但我建议您使用某种框架来帮助您完成所有这些工作。

当我们遇到类似的情况时,经过一番研究,我们得出的结论是使用 Flask因为Sessions后来我们发现使用 Flask-OAuth 连接 Facebook 并不难扩展名。

您可以在我的一个名为 gae-init 的开源项目中找到使用 Flask、Sessions、Facebook Login 和一堆其他内容的完整示例。 .

关于javascript - GAE Python JavaScript : How to insert response data from facebook login into the datastore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14919357/

相关文章:

javascript - 使用 Meteor 触发两次 touchend 事件

javascript - NodeJS API 函数的范围 - Firebase 函数和 Twitter API

python - 修补 sshuttle 的 firewall.py -- IPFW 到 PF

javascript - "Priority Nav"在 div float 时中断

javascript - Javascript音频暂停按钮有效,但不会再次恢复

python - 在排序和旋转的数组中找到最小元素

python - Flask - 如何结合 Flask-WTF 和 Flask-SQLAlchemy 来编辑数据库模型?

python - 如何在 Mac OS X 10.6 上将 virtualenv 与 Google App Engine SDK 一起使用

android - 客户端与 Cloud Endpoints 的客户端通信

android - 如何通过 Google Cloud Endpoint API (Android) 在 Google Datastore 上获取和设置对象