2016-10-18 2 views
2

Я работаю над мобильным приложением, используя Meteor и Facebook или Google.Meteor Social Login - пустая страница на oauth2 с помощью Facebook или Google

На устройствах Android он отлично работает.

Но на устройствах iOS я получаю пустую страницу после успешной аутентификации. Пользователь должен нажать кнопку «Готово», чтобы закрыть страницу и вернуть приложение в управление.

Screenshot of "Done" button to be clicked on

Метеор версия 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

Это может быть актуальным для вас http: // stackoverflow.com/questions/39936777/meteor-1-3-accounts-facebook-login-for-ios-not-working? noredirect = 1 # comment67179180_39936777 – Mikkel

ответ

0

Я нахожу решение этой ошибке WERY долгое время, но я нашел этот персонал .... метеор добавить Кордову: Cordova-плагин-inappbrowser @https://github.com/ephemer/cordova-plugin-inappbrowser.git#04091fde737519c149e7ad6316971cb6b490c5b3, и это помогает мне, и я думаю, что это вам помогает =)

+0

Я бы рекомендовал написать более подробно, как вам удалось исправить эту проблему. –

+0

Я уже использую inAppBrowser версии 1.4.0 – KostasS

+0

$ rootScope. $ On ('$ cordovaInAppBrowser: exit', function (e, event) { if (Meteor.loggingIn() === false) { $ ionicLoading.hide(); } }); $ scope. $ On ('$ ionicView.beforeEnter', function (event, viewData) { viewData.enableBack = false; }); $ scope. $ On ('$ ionicView.afterEnter', function (e, event) { $ ionicLoading.hide(); }); – KostasS

0

При создании своего гибридного приложения iOS с использованием Meteor последний использует Cordova и плагин Cordova InAppBrowser.

Этот плагин используется при представлении стороннего сервиса OAuth (будь то Facebook, Google, GitHub или что-то еще), очень вероятно, что новая страница не имеет доступа к локальному API-интерфейсу Cordova.

К сожалению, была "ошибка" в этом плагине при использовании в такой конфигурации, см [CB-11136]:

InAppBrowser не закрывается с WKWebView OAuth

Запуск InAppBrowser из Кордовы IOS платформы 4+ с WKWebView для OAuth (например, Facebook или Google login) не удается закрыть, как следует.

Причина в том, что весь поток WKWebView кажется приостановленным, когда представлен другой контроллер представления. Это можно подтвердить, проверив сеанс WKWebView в Safari, выполнив window.open('http://something.com'), а затем попробуйте ввести другую команду в эту консоль Safari.

Это полностью объясняет, почему основное приложение не может взять под контроль назад и закрыть это новое окно, но все прекрасно работает, когда пользователь вручную нажимает на кнопку «Done» (в частности, маркеры доступа правильно восстановлены и пользователь получает войти в систему в приложение).

Это исправлено с версии плагина 1.7.0.

вручную обновления версии плагина InAppBrowser для 1.7.0 или поздно исправляет проблему на IOS Кордова упакованных приложений для всех тестируемых OAuth услуг логин:

meteor add cordova:[email protected]

(Вы можете просмотреть в Cordova Plugins registry найти последний доступный выпуск)

Смежные вопросы