编辑:来自未来的亲人,trey-jones通过实施
setLoginBehavior解决了这个问题,FBSDKLoginNative似乎在FB结束时没有模块问题.
环境:
MacOS X 10.10.5
Ti SDK 5.1.1.GA - 5.1.2.GA
iOS 9.2
Ti.Facebook 5.0.0 - 5.0.1
我的项目设置(tiapp.xml)很好(它适用于iOS和Android上的所有其他情况).
代码我用来调用登录:
var fb = require('facebook');
fb.initialize();
fb.authorize();
如果将Facebook应用程序安装到设备上,则fb.authorize()不会打开.发生这种情况时,我没有看到任何iOS系统级消息.
有没有其他人在安装了应用程序的iOS设备上使用fb.authorize和新的sdk运气.如果系统上没有fb应用程序,它会正确打开基于浏览器的视图.
编辑:基于登录与AppC的KitchenSink一起工作的事实,我已经为此设置了一个解决方法(它并不漂亮).
解决方法是将Ti.FB loginButton添加到代码中,如果它不可见则无关紧要,初始化这将解决导致自定义登录的.authorize()无效的问题.
//Workaround button:
if(OS_IOS){
var fbHaxBtn = fb.createLoginButton({
readPermissions: ['email'],
visible: false
});
}
//It needs to be added to the window/doesn't need to be visible though
$.login_window.add(fbHaxBtn);
//Then in our custom button's code, we can fire as normal:
function doLoginClick{
fb.initialize(); //I was having unexpected issues dropping this line on Android, although the docs say its deprecated.
fb.authorize();
}
如果/当这个东西得到正式修复时,将保持此票证更新.
最佳答案 这是我对这个问题的第二个答案.我相信我的原始答案为对话提供了一些价值,这就是我离开它的原因,但它仍然没有始终如一地解决facebook授权无法解决的问题.
一致的解决方案原来是修改官方的Ti.Facebook模块.我将提交此更改的拉取请求(1行),但是现在,您可以在此处获取工作模块:
这始终允许用户通过显式设置登录行为来使用浏览器进行授权,而不是通过快速应用切换来使用本机Facebook应用. This is actually the intent of Facebook’s developers.
在尝试使用本机应用程序登录时,我无法确定导致它失败的原因 – 它应该尝试下一个选项,即浏览器 – 但这样做,但也不需要TiFacebookButton.
我希望它可以帮助别人!