通过Chrome扩展程序使用javascript进行facebook身份验证

时间:2011-08-15 08:29:56

标签: javascript facebook-graph-api facebook google-chrome-extension

当用户登录到Facebook时,我正在尝试使用我的chrome扩展程序显示一个简单的警报窗口。我有javascript sdk初始化代码以及在我的background.html页面中获取登录状态的代码。我的manifest.json文件正确调用了后台页面。

我无法在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>

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

由于这是在后台页面中完成的,因此您必须确保在另一个页面中进行身份验证,因为后台页面是无头的,没有UI。那么用户如何点击授权?

我不知道Facebook API,但由于它是OAuth2,我要做的是创建一个名为“facebook_auth.html”的单独html页面,然后将认证码放在那里。在获得授权后,请按照我们的说明进行操作。他似乎知道自己在做什么。您的后台页面将只打开新标签(chrome.tabs.create)进行身份验证。

看看本教程,并将其应用于Facebook: http://code.google.com/chrome/extensions/tut_oauth.html