Подтвердить что ты не робот

Meteor 1.3+ Accounts Facebook Вход для iOS не работает

Я пытаюсь найти решение (к сожалению, уже 3 месяца) для входа в Facebook с помощью Meteors Accounts Facebook на iOS. Я пробовал почти все, что искал Google, выступит на форумах Meteor и даже откроет проблему Github.

Но эта проблема все еще ускользает от меня. Все работает отлично на рабочем столе, но как только я, как я тестирую на мобильном устройстве, получаю сообщение об ошибке "Не авторизованы. Вы не вошли в систему. Пожалуйста, войдите в систему и попробуйте еще раз".

Я нашел несколько других с этой проблемой и очень мало информации о полном доказательстве. И в этот момент я начинаю отчаянно.

Это не проблема, пока Метеор не поднялся до 1.3.

введите описание изображения здесь

4b9b3361

Ответ 1

Он работает для меня со следующей настройкой

  • Последняя версия Meteor и Xcode
  • Счета, связанные с метеорными пакетами

    accounts-base
    accounts-password
    accounts-facebook
    accounts-google
    useraccounts:materialize 
    service-configuration
    accounts-ui
    splendido:accounts-meld
    
  • Предоставление шаблона с помощью

    {{> atForm}}
    
  • У меня также добавлено 2 плагины cordova (для этого создайте файл внутри папки .meteor с именем cordova-plugins и следующий контент

    [email protected]://github.com/meteor/cordova-plugin-meteor-webapp.git#8bf95eed3f313299fc2de33658866278eea2cdc5
    [email protected]://github.com/apache/cordova-plugin-inappbrowser.git#2df0e72c36f1fda35c04b3b06bd7beaafaae6ee9
    
  • Также убедитесь, что у вас есть следующая строка в теге html head

    <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' 'unsafe-eval' data: " />
    
  • Наконец, добавьте следующие строки в ваш файл mobile-config.js

    App.accessRule('http://*', {type: 'navigation'});
    App.accessRule('https://*', {type: 'navigation'});
    

Также запустите команду meteor reset перед сборкой

Ответ 2

Здесь может возникнуть проблема в проблемах GitHub

В соответствии с автором - Похоже, что WKWebView в iOS 10 больше не применяет Meteor Cordova CSP (default-src *) к веб-сайтам и блокирует соединение, с приведенным ниже сообщением. Это нарушает производственные приложения, которые делают подключения к веб-каталогу (возможно, только соединения, отличные от соединения по умолчанию с сервером Meteor, не уверены), когда их пользователи обновляются до iOS 10 (который был выпущен).

Проблема заключается в кодеке

<meta http-equiv="Content-Security-Policy" content="default-src * data: blob: 'unsafe-inline' 'unsafe-eval';">

Вы можете попробовать заменить его на

<meta http-equiv="Content-Security-Policy" content="default-src * 'self' data: blob: 'unsafe-inline' 'unsafe-eval' wss://*.ourdomain.tld ">

в файле https://github.com/meteor/meteor/blob/master/packages/boilerplate-generator/boilerplate_web.cordova.html

а затем обновите Meteor 1.4, запустив meteor update boilerplate-generator

Вы также можете попробовать обновить meteor update --release 1.4.2-beta.4, как указано в ссылке, которая

Этот пакет запускается во время процесса сборки, и обновление этого пакета на уровне проекта не изменит, какие файлы используются для сборки приложения.

Также, если он все еще не работает, то, как было предложено этим автором

Вы можете добавить простой плагин meteor add cordova:[email protected]

Репо здесь, а страница npm здесь

Надеюсь, что это поможет.

Полная атрибуция идет по ссылке github и упомянутым выше авторам

Ответ 3

Чтобы сделать эту работу для меня, я обновился до последней версии метеорита, аккаунтов-facebook и т.д.

Затем я развернул веб-версию приложения с помощью входа в facebook. Затем я протестировал веб-приложение facebook login. Все хорошее после того, как в настройках вашего приложения facebook добавлен действительный URI ретрансляции oauth. Это должно быть что-то вроде https://example.com

Затем я запустил терминал meteor run ios-device --settings settings.json --mobile-server https://example.com

Мой файл mobile-config.js также содержится в соответствии с рекомендацией @Afzal Hossain App.accessRule('http://*', {type: 'navigation'}); App.accessRule('https://*', {type: 'navigation'});

Приложение, установленное на моем устройстве, работало для входа в систему.

Нет необходимости в плагинах cordova или политике CSP, поскольку обновления метеоров сделали ненужными.

Ответ 4

Я исправил ту же проблему, указав правильный URL в приложении Facebook "Действительные URI перенаправления OAuth".

Ранее я указал http://<domainname>/_oauth/facebook?close

который не работал. После некоторой отладки я обнаружил, что URL должен быть

http://<domainname>:<port>/_oauth/facebook?close (с номером порта)

Итак, в случае сервера, работающего на http://localhost:3000, это будет http://<device ip/external ip>:3000/_oauth/facebook?close

И, если вы используете приложение с --server = http://www.domainname.com, тогда это будет http://www.domainname:80/_oauth/facebook?close (порт 80 для HTTP)

Теперь я вижу страницу входа в приложение Facebook и могу войти в систему.

Но теперь я застрял с закрытием InAppBrowser после аутентификации. Любая помощь в этом отношении будет отличной!