Meteor社交登录 - 使用Facebook或Google登录oauth2的空白页面

时间:2016-10-18 09:54:07

标签: ios cordova meteor meteor-accounts

我正在使用Meteor和Facebook或Google登录的移动应用程序。

在Android设备上,它运行良好。

但是在iOS设备上,我在认证成功后会得到一个空白页面。用户必须点击“完成”按钮才能关闭页面并让应用程序重新获得控制权。

Screenshot of "Done" button to be clicked on

Meteor版本1.3.4.4和最新的accounts-facebookaccounts-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 {

      }
    }
  });
};

2 个答案:

答案 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以查找最新的可用版本)