我正在使用Meteor和Facebook或Google登录的移动应用程序。
在Android设备上,它运行良好。
但是在iOS设备上,我在认证成功后会得到一个空白页面。用户必须点击“完成”按钮才能关闭页面并让应用程序重新获得控制权。
Meteor版本1.3.4.4
和最新的accounts-facebook
,accounts-google
个包。
这是我用于登录的代码:
//Oauth login with Facebook.
this.loginFB = function() {
Meteor.loginWithFacebook({
requestPermissions: ['email', 'public_profile'],
redirectUrl: Meteor.absoluteUrl('_oauth/facebook')
}, function(err){
if( err.error === 'Email exists.' ) {
if (Meteor.isCordova) {
} else {
}
}
});
};
//Oauth login with Google.
this.loginGoogle = function() {
Meteor.loginWithGoogle({
requestPermissions: ['email', 'profile'],
redirectUrl: Meteor.absoluteUrl('_oauth/google')
}, function(err){
if( err.error === 'Email exists.' ) {
if (Meteor.isCordova) {
} else {
}
}
});
};
答案 0 :(得分:0)
我很长时间都找到了这个bug的解决方案,但我找到了这个工作人员.... meteor add cordova:cordova-plugin-inappbrowser @ https://github.com/ephemer/cordova-plugin-inappbrowser.git#04091fde737519c149e7ad6316971cb6b490c5b3它帮助我,我认为它可以帮助你=)
答案 1 :(得分:0)
使用Meteor创建iOS混合应用程序时,后者使用Cordova和Cordova插件InAppBrowser。
该插件用于展示第三方OAuth服务(无论是Facebook,Google,GitHub还是其他),很可能是因为新页面无法访问本地应用Cordova API。
很遗憾,在此类配置中使用该插件时出现“错误”,请参阅[CB-11136]:
InAppBrowser无法使用WKWebView OAuth关闭
使用其用于OAuth的WKWebView(例如Facebook或Google登录)从Cordova iOS Platform 4+启动InAppBrowser无法正常关闭。
原因是当呈现另一个视图控制器时,整个WKWebView线程似乎暂停。这可以通过检查Safari中的WKWebView会话,运行
window.open('http://something.com')
然后尝试在该Safari控制台中输入另一个命令来确认。
这完全解释了为什么底层应用程序无法控制并关闭该新窗口,但是当用户手动按下“完成”按钮时,一切正常(特别是,正确检索访问令牌并且用户登录到应用程序) )。
从插件版本1.7.0
开始修复此问题。
手动将InAppBrowser插件版本升级到1.7.0
或更高版本可修复所有经过测试的OAuth登录服务的iOS Cordova打包应用程序的问题:
<强> meteor add cordova:cordova-plugin-inappbrowser@1.7.1
强>
(您可以浏览Cordova Plugins registry以查找最新的可用版本)