0

我想在用户登录Facebook时使用我的Chrome扩展程序显示简单的警报窗口。我有javascript sdk初始化代码,也有代码在我的background.html页面中获取登录状态。我的manifest.json文件正确调用了背景页面。通过Chrome扩展程序使用JavaScript进行Facebook身份验证

我无法在background.html页面上放置断点。我想知道这是怎么了,我应该去有关声明的JavaScript的Facebook SDK,如果一个用户登录检查

<div id="fb-root"></div> 

<script src="http://connect.facebook.net/en_US/all.js"></script> 

<script> 

window.fbAsyncInit = function() { 
    FB.init({ 
     appId : 'my App id (i have my app id)', 
     status : true, // check login status 
     cookie : true, // enable cookies to allow the server to access the session 
     xfbml : true // parse XFBML 
    }); 
    }; 

    (function() { 
    var e = document.createElement('script'); 
    e.async = true; 
    document.getElementById('fb-root').appendChild(e); 
    }()); 

FB.getLoginStatus(function(response) { 
    if (response.authResponse) { 
      alert("logged in");} 
    else { 
     // no user session available, someone you dont know                            
    } 
}); 

</script> 
+1

你有没有发现这样做的最好方法是什么? :) – TigrouMeow

回答

2

你有很多的代码中的问题,让我们先解决它,然后解释:

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId: 'your app id', 
     status: true, 
     cookie: true, 
     xfbml: true, 
     channelUrl : 'http://WWW.MYDOMAIN.COM/channel.html', 
     oauth : true 
    }); 

    FB.getLoginStatus(function(response) { 
     if (response.authResponse) { 
       alert("logged in");} 
     else { 
      // no user session available, someone you dont know                            
     } 
    }); 
    }; 
    (function() { 
    var e = document.createElement('script'); e.async = true; 
    e.src = document.location.protocol + 
     '//connect.facebook.net/en_US/all.js'; 
    document.getElementById('fb-root').appendChild(e); 
    }()); 
</script> 

现在需要考虑的要点:

  1. 阅读Javascript SDK documentation
  2. 使用oauth标志使OAuth 2.0
  3. 您必须要么使用异步加载或标准方法,但不是他们两个人(我加载它异步这里)
  4. 把你所有的Facebook在fbAsyncInit
  5. 调用添加频道文件
  6. 阅读这些文章onetwo
+0

嗨ifaour,我实施你的建议以外的渠道网址,因为这是一个附加。但是当我登录Facebook时,我仍然没有看到这个警告窗口。我在检查元素窗口中也看不到'fb-root'。 – Praveen

+0

如果我把它叫做Fb.getloginStatus() – Praveen

+0

你能试试[this](http://codepad.org/Ip66G79A)吗?当我登录到Facebook时加载此页面时,我收到*登录*警报。 – ifaour

0

由于这是在后台页面正在做,你必须确保认证在另一页正在做,因为背景页是无头的,疗法e不是用户界面。那么用户如何点击授权?

我不知道Facebook API,但由于它是OAuth2,我要做的是创建一个名为“facebook_auth.html”的单独html页面,并将验证码放在那里。经过授权后,请遵循以下说明。他似乎知道自己在做什么。您的后台页面将只打开新选项卡(chrome.tabs.create)到身份验证。

看看这个教程,并将其应用到Facebook的: http://code.google.com/chrome/extensions/tut_oauth.html

+0

谢谢你mansour。我会研究它。 – Praveen

相关问题