Я работаю в гибридном приложении, чтобы сообщать выбоины в нашем городе. Пользователь может зарегистрироваться в приложении классическим способом (заполнить формы) или через одну из социальных сетей (facebook, gmail, twitter).Facebook логин на мобильный через Cordova/Angular/Ionic
Система работает через сервер на рельсах и мобильное приложение в качестве клиента (ионный/углового)
На стороне сервера мы решили эту проблему, пользователь может сделать регистрацию/войти на страницу в как они хотят.
Но есть несколько проблем с приложением, приложение не делает ничего, когда вы делаете нажмите на кнопку «Вход через Facebook»
это стиль его организацию.
app/
plugins/
InAppBrowser
www/
css/
js/
controllers/
splash.js
map.js
tabs.js
services/
users.js
notifications.js
app.js
utils.js
lib/
angular/
ng-cordova-oauth/
ngCordova/
ionic/
templates/
map.html
splash.html
tabs.html
index.html
Контроллер splash.js отвечает за выполнение функции входа в систему.
angular.module('app')
.controller('SplashCtrl', function($scope, User, $state, $ionicPopup, $auth, $cordovaOauth) {
$scope.session_id = User.session_id;
$scope.facebookLogin = function() {
alert("flag1");
User.fbSignIn().then(function() {
alert("flag2");
User.fbGetData().then(function() {
alert("flag3");
User.fbAuth().then(function() {
alert("flag4");
// Detect if it is a sign in or sign up
if (User.username) {
console.log('Controller reports successfull social login.');
$state.go('tab.map');
} else {
// Open finish signup modal
console.log('Contorller reports this is a new user');
$state.go('finish_signup');
}
}, function() {
alert("flag5");
$ionicPopup.alert({
title: '<b>App</b>',
template: 'Credenciales no válidas, vuelve a intentar.',
okText: 'Aceptar',
okType: 'button-energized'
})
});
}, function() {
alert("flag6");
// alert('Could not get your Facebook data...');
});
}, function() {
alert("flag7");
// alert('Could not sign you into Facebook...');
});
}
})
Я установил флажки предупреждений через функции, чтобы увидеть, где приложение застревает. я могу видеть только предупредит «flag1» на ничего phone.Then происходит
контроллер взаимодействует со службой users.js я поставил код на Pastebin, потому что это слишком долго users.js service
Клиент должен запросить токен доступа к серверу, а затем сравнить в SplashCtrl, если они получили доступ к токену, приложение перенаправляет пользователя в шаблон tabs.html, который будет главной страницей.
На консольном сервере ничего не отображается. Таким образом, приложение-запрос никогда не связывается с сервером. Eventhough «клиенты» и переменные «сервер» уже объявлены в app.js
.constant('SERVER', {
url: 'https://rails-tutorial-denialtorres.c9.io'
})
.constant('CLIENTS', {
facebook: 'fb Api'
});
Я могу только вход сервера, если я ставлю имя пользователя и пароль традиционного способа preview
Я надеюсь, вы можете помочь мне с этими ребятами
привет и спасибо!
привет! Спасибо за помощь. Я переписал код и отменил службу users.js и написал функцию внутри контроллера splash.js. Поэтому только контроллер будет взаимодействовать с index.html. Внутри контроллера я помещаю эту функцию [pastebin.com/LZx5XFpG] - но я никогда не получаю предупреждение (JSON.stringify (result)); 'alert. Ты можешь помочь мне с этим ?? благодаря! –
Тестирование на реальном устройстве? – Aethiss
Большое спасибо за помощь! Проблема была в библиотеке ngCordova.js и плагине InAppBrowser, для плагина был изменен идентификатор для 'cordova-plugin-inappbrowser' вместо' org.apache.cordova.inappbrowser'. Теперь функция входа в систему работает как шарм. С уважением! –