我意识到在这个问题上有类似的问题,但没有一个能完全解决我遇到的问题。
首先,如果我完全按照SDK文档中的示例进行操作,那么一切似乎都能正常工作。以下是工作代码供参考:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'your-app-id',
xfbml : true,
version : 'v2.3'
});
FB.getLoginStatus(function(response) {
console.log(response);
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/es_LA/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
我的问题是,我正在使用BackboneJS应用程序,我希望能够使用我现有的代码库。我已经尝试修改代码,以便在初始化SDK之后初始化全局Facebook帮助程序对象,然后我尝试使用该帮助程序对象来访问SDK(FB.getLoginStatus(),FB.login()等)。通常,这些调用是在骨干视图中处理事件的结果。像这样:
var MyView = Backbone.View.extend({
events: {
"click my-fb-login-button": "onFbLoginClick"
},
... More code here
onFbLoginClick: function() {
// Doesn't work
Facebook.login(function(response) {
console.log("Nope!");
}) // calls getLoginStatus(), Login(), etc.
// Also doesn't work. Callback is never invoked, no errors
FB.getLoginStatus(function(response) {
console.log("NEVER GETS HERE");
);
// Also, doesn't work. Brings up a pop-up in the browser
// which is blank.
FB.login(function(response) {});
}
});
我尝试过使用调试SDK,跟踪代码并且没有发现任何有用的东西。我想如果我做错了,我会认为我会看到一个javascript错误。有什么我从根本上误解了吗?
我尝试在本地运行此代码,我的Facebook App的网站网址设置为localhost。我也尝试将其部署到heroku并通过SSL运行它。结果相同。
谢谢!