0

我正在尝试将已经允许我们的 facebook 应用程序的用户自动登录到我的网站,最初我打算使用:

  var cb = function(response) {   
    if (response.status === 'connected') {
       FB.api('/me', function(response) {
        $.post( url, { 'op':'facebook','name':response['name'],'id':response['id'],'email':response['email']},
           function( data ) {
                parent.location.reload();

           });
      });
    } else {
      alert('You are not logged in');
    }
  };
  FB.login(cb, { scope: 'publish_actions,publish_stream,read_stream,email' });

虽然使用它会打开一个 facebook 弹出窗口,但当以这样的自动方式完成时,它会被许多弹出窗口阻止程序和浏览器阻止,并且还会显示给不允许我们的应用程序的用户。

我希望它谨慎地完成,但我不确定如何:S

如果有人能告诉我如何使用 javascript 让他们登录,那就太好了:)

4

2 回答 2

1

提示用户登录应该取决于用户生成的事件,比如点击一个元素。大多数浏览器会阻止自动打开新窗口的尝试,除非有足够的信心确定用户已请求该操作。

如果您想在访问者加载您的页面时自动检测访问者的登录状态,您应该挂钩 Javascript SDK 公开的各种身份验证事件(“auth.authResponseChange”、“auth.login”等),或者手动请求访问者的状态使用“FB.getLoginStatus”方法。您可以在https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/阅读有关这些事件的更多信息

于 2012-05-10T01:42:46.643 回答
0

设法让它工作!再次阅读facebook教程,这就是我想出的

window.onload=function(){
var url = "http://mysite.com/";
FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
       FB.api('/me', function(response) {
        $.post( url, { 'op':'facebook','name':response['name'],'id':response['id'],'email':response['email']},
           function( data ) {
                parent.location.reload();

           });
        });
    }
  });
};
于 2012-05-10T02:08:44.523 回答