当用户登录到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>
答案 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>
现在需要考虑的要点:
oauth
标志启用OAuth 2.0 fbAsyncInit
答案 1 :(得分:0)
由于这是在后台页面中完成的,因此您必须确保在另一个页面中进行身份验证,因为后台页面是无头的,没有UI。那么用户如何点击授权?
我不知道Facebook API,但由于它是OAuth2,我要做的是创建一个名为“facebook_auth.html”的单独html页面,然后将认证码放在那里。在获得授权后,请按照我们的说明进行操作。他似乎知道自己在做什么。您的后台页面将只打开新标签(chrome.tabs.create)进行身份验证。
看看本教程,并将其应用于Facebook: http://code.google.com/chrome/extensions/tut_oauth.html