Не работает вход в систему Facebook для учетных записей Meteor 1.3 для iOS

#javascript #facebook #meteor #meteor-accounts

#javascript #Facebook #meteor #meteor-учетные записи

Вопрос:

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

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

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

Это не было проблемой, пока Meteor не перешел на 1.3.

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

Комментарии:

1. Похоже, это реальная проблема, поскольку вы нашли других, у которых она тоже есть. Если вы достаточно уверены, вы могли бы взглянуть на исходный код пакета Accounts и попытаться решить проблему, или вы могли бы поднять проблему Meteor с вашими доказательствами (и примером репозитория). Похоже, это проблема, которую нужно исправить

2. Это определенно так, или просто нет понятного решения. И это мучает меня в общей сложности около 6 месяцев.

3. Да, если вы можете предложить кому-нибудь взглянуть на это, я думаю, это стоит

4. Я оставил проблему на mdg GitHub около трех месяцев назад, а затем столкнулся с ней месяц назад. Также получил удар от кого-то другого.

5. github.com/meteor/accounts/issues/9

Ответ №1:

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

  1. Последняя версия Meteor и Xcode
  2. Пакеты Meteor, связанные с учетной записью

     accounts-base
    accounts-password
    accounts-facebook
    accounts-google
    useraccounts:materialize 
    service-configuration
    accounts-ui
    splendido:accounts-meld
      
  3. Рендеринг шаблона с

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

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

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

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

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

Комментарии:

1. Я попробую ваш процесс сегодня вечером. Мне любопытно, почему в этом случае необходим «сброс метеора»? И нужно ли мне делать это перед каждой сборкой?

2. Также просто любопытно, в разделе разработчиков Facebook вы выполнили стандартную сборку платформы веб-сайта?

3. У меня есть еще один вопрос. Какое расширение файла я должен использовать для файла cordova-plugins?

4. Иногда измененный код не отражается в сборках cordova (ios и android) и в этом случае meteor reset решает проблему.

5. Для создания приложения facebook я следовал инструкциям, показанным в пользовательском интерфейсе учетных записей (кнопка настройки facebook)

Ответ №2:

Здесь может быть проблема в проблемах GitHub

По словам автора, похоже, что WKWebView в iOS 10 больше не применяет CSP Meteor Cordova (по умолчанию-src *) к websockets и блокирует соединение с сообщением ниже. Это нарушает работу производственных приложений, которые устанавливают соединения с websocket (возможно, только соединения, отличные от подключения по умолчанию к серверу 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:meteor-ios10-csp-fix@0.1.0

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

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

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

Комментарии:

1. Привет, спасибо за ответ. Может быть, я не понял, верно. Но, похоже, это не помогло.

2. вы пробовали использовать как бета-версию, так и meteor-ios10-csp-fix@0.1.0 плагин тоже?

Ответ №3:

Чтобы это работало на меня, я обновился до последней версии meteor, accounts-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, поскольку обновления meteor сделали их ненужными.

Комментарии:

1. Так что просто убедитесь, что я правильно понял ваш процесс. Сначала вам нужно было выполнить развертывание на реальном сервере? А для —mobile-server вы объявили соединение или оно было установлено в settings.json?

2. Правильно, для тестирования я развернул промежуточную версию сайта на linode. Мне не нужно было делать ничего особенного в settings.json, чего бы я не делал для обычного развертывания.

Ответ №4:

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

Ранее я указывал 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 после аутентификации. Любая помощь в этом отношении была бы отличной!