所以我使用 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 。因此,通过拥有 id
和 name
,您可以简单地将此信息发送回您的应用程序,如下所示:
$.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/