接受权限后自动登录Facebook用户

时间:2012-05-10 01:35:04

标签: javascript facebook facebook-graph-api

我正在尝试将用户自动登录到我的网站,他们已经允许我们的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登录,那将会非常棒:)

2 个答案:

答案 0 :(得分:1)

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

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

了解有关这些活动的更多信息

答案 1 :(得分: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();

           });
        });
    }
  });
};