Я создаю веб-приложение, используя Sencha Touch2. На iPhone приложение можно использовать в полноэкранном режиме.
У меня уже есть веб-приложение для браузера ПК, и я использую API календаря Google для подключения к OAuth2.
На этапе авторизации необходимо открыть новое окно для входа в учетную запись пользователя Google.
Возможно, я смогу создать приложение Sencha Touch, используя ту же архитектуру ПК, но открытие нового окна закроет полноэкранное приложение.
Знаете ли вы, как использовать Google OAuth2 в приложении Sencha Touch2?
-- Добавить 2013/2/6
Приложение My Sencha Touch2 — это веб-приложение. Я хочу знать, что можно предоставить разрешение в полноэкранном веб-приложении, а не в браузере.
-- Добавить 2013/2/7
Я использую наконечник. http://miketheindian.com/2012/02/22/оставаясьвполноэкранномрежиме-на-iphone-от-страницы-к-странице/
Этот способ не требует открытия браузера. Это лучше, чем открывать новое окно, но лучше авторизоваться в iframe...
-- Добавлено 2013/2/13 Наконец-то я беру путь;
Google AOuth — это три шаблона для пользователя.
1.Учетная запись пользователя google вышла из системы, пользователь должен ввести идентификатор пользователя и пароль.
2. Аккаунт пользователя google является логином, но приложение не разрешено, пользователь должен нажать кнопку «разрешить».
3. Аккаунт пользователя google является логином, пользователю не нужно ничего делать.
Когда время 3., мы можем авторизоваться в iframe. И, когда время 1 или 2, мы не можем авторизоваться во фрейме, поэтому используйте метод изменения location.href (подробности в http://miketheindian.com/2012/02/22/staying-вполноэкранномрежименаiPhoneсостраницынастраницу/ ).
Подробности
make view имеет контейнер { xtype: 'container', html: '<iframe src="" id="googleLogin" style="border:0;">' },
изменить src в контроллере
var iframe = Ext.get(Ext.query('#googleLogin'));
iframe.set(
{
src: responseInformation.googleOAuthUrl
});
Когда время 3., пользователь входит в учетную запись google, это нормально.
Когда время 1. или 2., мы меняем location.href. Мы хотим обработать событие iframe «onerror», но этого события нет.
Я использую settimer и проверяю, не изменяется ли src iframe первым src (из-за ошибки перенаправления на страницу входа в Google).
3000 мс не так важно. Когда время 3., перенаправление успешно, и страница изменилась.
me.timerId = setInterval(function(){
if (iframe.el.dom.src.indexOf( /* first url */'') !== -1){
location.href = iframe.el.dom.src;
clearInterval(me.timerId);
}
}, 3000);