2017-02-20 18 views
0

У меня есть веб-страница, где я реализую ADAL.JS.ADAL.JS и автономное веб-приложение

При просмотре страницы через Интернет она отлично работает; однако, когда я пытаюсь просмотреть его на iPhone, и я сохранил его как ярлык на рабочем столе с помощью кнопки . Добавить в Homescreen, все идет поскорее.

Начальная страница (index.html) корректно показывает метатег apple-mobile-web-app-capable; однако, когда аутентификация вызывается, я попал в настоящее окно браузера. После перенаправления на index.html я все еще в отдельном окне браузера, а не в представлении веб-приложения.

В конечном счете, я хочу иметь это как автономный веб-сайт со всеми функциональными возможностями страницы, отображаемыми в представлении, созданным apple-mobile-web-app-capable. Любые другие идеи относительно того, как реализовать это, оцениваются.

Заранее спасибо.

ответ

0

Это одна из больших проблем, существующих в настоящее время в iOS webapps. Каждая ссылка или перенаправление открывается в новом окне. Вы можете исправить это изменение window.location.href с JavaScript.

+0

Странно, что если у меня есть файл index.html и выполните window.location.href на www.google.com, я все еще в webapp. Однако, когда ADAL перенаправляет меня на страницу входа в AD через window.location, страница входа ADAL находится в отдельном окне. Когда вы говорите, исправьте это, изменив window.location.href с JS .. как вы предлагаете мне это сделать ... обновить код ADAL JS, чтобы использовать свойство href вместо window.location? – Admiralman

+0

Adal.js обеспечивает способ без изменения самого себя. Я думаю, что просто написать следующее в скрипт _your_ будет делать это (замените% ac% на переменную AuthentificationContest): '% ac% .config.displayCall = function (url) { if (urlNavigate) { this.info (' Перейдите к: + urlNavigate; window.location.href = urlNavigate; } else { this.info ('Navigate url is empty'); } } ' – Siphalor

+0

См. Мой другой ответ ... пытался связать его с этим комментарием, но слишком долго – Admiralman

0

Кажется, что-то не хватает ... Я получаю urlNavigate неопределенная ошибка ... предложения?

alert('Running Auth'); 

online = navigator.onLine;

authContext = new AuthenticationContext({ 
    tenant: azureTenant, 
    clientId: azureClientId, 
    postLogoutRedirectUri: window.location, 
    //redirectUri: "https://shlpkpiapi.azurewebsites.net/kpiapp/test.html" 
}); 

authContext.config.displayCall=function(url){ 

    if (urlNavigate) 
    { 
     this.info('Navigate to:' + urlNavigate); 
     window.location.href=urlNavigate; 
    } 
    else 
    { 
     this.info('Navigate url is empty'); 
    } 
} 



if (authContext.isCallback(window.location.hash)) { 

    authContext.handleWindowCallback(); 
    var err = authContext.getLoginError(); 
    if (err) { 
     alert('Error on callback') 
    } 
} 
else { 

    var user = authContext.getCachedUser(); 
    if (user) { 
     //We have a user in cache and are using those credentials 
     console.log('Signed in as: ' + user.userName); 


    } else { 
     console.log('Not signed in.') 
     if (online) 
     { 
      alert('signing in'); 
      authContext.login(); 
     } 
     else 
     { 
      alert('currently offline'); 
     }  
    } 
} 
+0

Моя ошибка: Параметр функции должен быть' urlNavigate' вместо 'url'. – Siphalor

+0

Добавил свой ответ ниже. – Admiralman

0

ОК ... Я внес изменения, и ошибка исчезла, но я не понимаю, как это должно решить проблему. Когда я добавляю свою страницу на свой домашний экран IPhone (https://xxxxx.azurewebsites.net/app/test.html), а затем нажмите на плитку, я попал на страницу test.html. На этой странице есть функция auth, которая выполняет команду adal.js, и переносит меня на «https://login.microsoftonline.com/xxx.onmicrosoft.com/oauth2 ...». Это отображается в моем веб-приложении IOS и содержит мою учетную запись и параметр Использовать другую учетную запись. Я нажимаю на свою учетную запись или выбираю опцию Использовать другую учетную запись, и меня переносят на другую страницу, открытую в Safari.

+0

Я знаю, что это аналогичная проблема с моим собственным iOS webapp. Вы не можете контролировать иностранные сайты, так что в настоящее время я ничего не могу вам предложить. Если я знаю способ и могу реализовать его в своем webapp, я дам вам знать. – Siphalor

+0

сделайте пожалуйста. Вы использовали Auth0? Возможно, это ответ? – Admiralman