Модуль Titanium – Facebook не использует собственный логин

Я пытаюсь реализовать facebook login в приложении, которое я пытаюсь разработать с помощью Titanium, и когда я нажимаю кнопку «connect», он показывает мне диалог, который выглядит так: Авторизоваться

Его внешний вид выглядит как вход в интернет-приложение facebook, а не как родной. Я хочу, чтобы это было так: Другой логин

Итак, как я могу заставить этот модуль использовать собственный диалог входа в систему вместо этого диалогового окна веб-стиля?

Для того, чтобы использовать iOS native facebook login, вам необходимо:

  1. Используйте новый модуль facebook require('facebook') , старый устарел
  2. Set forceDialogAuth = false ;
  3. Убедитесь, что идентификатор пакета вашего приложения также установлен в вашем приложении facebook
  4. Установите идентификатор приложения facebook в файле tiapp.xml
  5. Переместите Info.plist в корневую папку вашего приложения и предоставите схему id и URL-адрес facebook (с помощью новых SDK вы можете сделать это в tiapp.xml, я приведу несколько примеров здесь через минуту)

Изображения, которые вы опубликовали, являются резервным решением, которое произойдет, если

  • Пользователь не активировал приложение facebook login / facebok на устройстве
  • Пользователь имеет версию iOS перед входом в систему facebook login
  • Вы запускаете свое приложение в симуляторе

Вот как я по умолчанию использую логин iOS:

1. Создайте приложение facebook
Чтобы использовать собственный вход в iOS facebook, вам нужно создать приложение facebook на developers.facebook.com . Скопируйте свой идентификатор приложения в текстовый редактор, нам это понадобится позже. Ваш идентификатор приложения facebook

2. Настройте приложение facebook
Включите интеграцию «Native iOS» в разделе «Основы».

(1) Введите идентификатор пакета, который вы используете для своего приложения, то же, что вы установили в tiapp.xml
(2) Активируйте Facebook-login, если вы хотите, чтобы facebook запускал ваше приложение из закладок и т. Д.
(3) Необязательно: для обмена идентификатором facebook по нескольким приложениям. Мы также будем использовать эту схему URL в Info.plist. Настройки приложения Facebook

3. Настройте tiapp.xml
Перейдите в Titanium Studio и откройте файл tiapp.xml (как правило, последний файл в каталоге ваших приложений). В нижнем левом углу есть две вкладки. Сначала нам понадобится обзор. Убедитесь, что ваш идентификатор приложения совпадает с тем, который вы ввели в приложение facebook. Нажмите на + модулей и добавьте собственный модуль facebook, который установлен по умолчанию. Он должен появиться в списке ниже. Введите описание изображения здесь
Еще в tiapp.xml перейдите на вкладку tiapp.xml и добавьте следующее:
<property name="ti.facebook.appid">XXXXXXXX</property>
С Xs, являющимся вашим идентификатором приложения facebook, очевидно.

4. Скопируйте и отредактируйте файл Info.plist
В Finder перейдите в корневую папку приложений. Отсюда перейдите к созданию> iphone. Здесь вы должны увидеть Info.plist. Скопируйте его и вставьте в корневую папку вашего приложения.
Откройте его с помощью текстового редактора по вашему выбору. Добавьте в файл FacebookAppID и FacebookDisplayName и замените значения placeholder собственными. Это может быть необязательно, но я использую его, и он работает, просто для того, чтобы быть в безопасности.) Ищите CFBundleURLTypes и отредактируйте его, как показано ниже, при этом тестом является схема URL вашего приложения, вы установили его в своем Facebook приложение раньше. Это позволит открыть приложение из Safari, введя test:// . Обратите внимание на fb в массиве CFBundleURLSchemes, это должно префикс вашего id приложения facebook, в отличие от всех остальных полей.

 <key>FacebookAppID</key> <string>XXXXXXXXXXXXX</string> <key>FacebookDisplayName</key> <string>Your facebook app name</string> <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>test</string> <key>CFBundleURLSchemes</key> <array> <string>test</string> <string>fbXXXXXXXXXX</string> </array> </dict> </array> 

Обратите внимание: с последними версиями SDK эти параметры можно также установить в файле tiapp.xml, но поскольку я еще не сделал этого, в этом примере используется Info.plist

5. Использование модуля facebook
Часто я не использую стандартную кнопку facebook, так как ее нельзя настроить достаточно. Предположим, что у вас есть кнопка входа в систему, называемая loginButton, и logoutButton, называемый logoutButton, мы подключаем их к нашему модулю facebook:

 // The module we have added to our project via tiapp.xml before var facebookModule = require('facebook'); // We can read the facebook app id from tiapp.xml var FACEBOOK_APP_ID = Ti.App.Properties.getString('ti.facebook.appid'); // Set the app id facebookModule.appid = FACEBOOK_APP_ID; // Do not force a facebook html popover but use the native dialog if possible facebookModule.forceDialogAuth = false; // Add an event listener to the facebook login event facebookModule.addEventListener('login', facebookLoginHandler); // Also add an event listener to the logout event facebookModule.addEventListener('logout', facebookLogoutHandler); // The event listener of our login button loginButton.addEventListener('click', function() { facebookModule.authorize(); }); // The event listener of our logout button logoutButton.addEventListener('click', function() { facebookModule.logout(); }); // The facebook login event handler function facebookLoginHandler(e) { if (e.success) { // Success! } else if (e.error) { // Error! } else if (e.cancelled) { // cancelled by user } } // The facebook logout handler function facebookLogoutHandler(e) { if (e.success) { // Success, clear the facebook browser cookies so someone else // can login later, if the browser fallback is used var client = Titanium.Network.createHTTPClient(); client.clearCookies('https://login.facebook.com'); } else if (e.error) { // Error! } }