我有一个同时拥有网页和指定移动页面的canvas facebook应用程序。 网页工作正常,并且当模拟浏览器移动与控制台时,一切正常。Facebook画布,无法从移动设备上的Facebook登录
但是,当我尝试从Facebook移动应用程序运行应用程序画布应用程序加载(这是正确的),但它不会登录。
我正在使用FB.login函数。
login: function() {
var deferred = $q.defer();
FB.login(function (response) {
if (!response || response.error) {
deferred.reject('Error occured');
} else {
deferred.resolve(response);
}
}, {
scope: 'email, user_friends'
});
return deferred.promise;
},
,并在设置 - >高级 - 我有: 客户端的OAuth登录,网页的OAuth登录,嵌入式浏览器的OAuth登录,有效的OAuth重定向URI和登录从设备填写正确。
但仍然从facebook移动应用程序的画布应用程序不会执行登录。
我一直试图让这个工作整天。 我无法在任何地方找到解决方案。 我也无法调试手机Facebook应用程序。
任何想法如何解决这个问题?
编辑
又看了看我的节点服务器日志,我看到的FB.login甚至没有叫。
EDIT 2
我结束了与更换其中getLoginStatus不会产生问题对我来说,因为它的一个Facebook画布应用的登录......但问题仍然是如何做到的登录。
编辑3 2015年11月26日
舒服,所以getLoginStatus没有完全解决我的问题,因为它其实并没有在这么记录用户对你可能需要登录的第一个条目画布游戏如果你需要的权限......我的解决办法是添加登录,如果getLoginStatus回报not_autorized像这样:
/**
* [getLoginStatus get the FB login status]
* @return {[type]} [description]
*/
getLoginStatus: function() {
var deferred = $q.defer();
FB.getLoginStatus(function (response) {
if (response.status === 'connected') {
deferred.resolve(response);
} else if (response.status === 'not_authorized') {
_fbFactory.login().then(function (fbLoginResponse) {
deferred.resolve(fbLoginResponse);
});
} else {
deferred.reject('Error occured');
}
});
return deferred.promise;
},
别急,还有更多的是对移动画布...的的FB.login功能将无法正常工作游戏(不知道它只是没有触发,或浏览器博客弹出或两者)。反正你需要通过按钮来主动地叫它......所以对于移动帆布比赛,我不得不添加一个开始播放按钮,然后登录不工作..
编辑4(决赛)
最终我注意到FB.login()不会被触发,除非它的外部事件触发它,所以我必须对Mobile画布进行更改,如果getLoginStatus不返回连接,则显示一个登录按钮,它将执行登录...其余的保持不变。 我所做的移动类似于接受的答案只适合我的需要...
我希望这可以帮助别人,除了我......
您是否从FB.Login方法获得响应?尝试Chrome远程调试,https://www.youtube.com/watch?v=HEqwnpLYnI0&feature=youtu.be。 –
什么是'getLoginStatus'的反应? – Rayon
我得到了用户ID和的accessToken这正是我需要的。 –