2016-06-04 1 views
0

Я работаю над приложением Ionic 2, которое требует входа в систему, используя внешнюю ссылку. По соображениям безопасности я предпочел бы открыть ссылку в системном браузере. После того, как я открою ссылку и войщу в систему с именем пользователя &, в корпусе html будет возвращен токен. Есть ли способ передать этот токен моему приложению? Или есть ли другие решения для решения этой проблемы? Спасибо.ionic2 получить данные от системного браузера

+0

Почему бы просто не отправить учетные данные, используя POST-метод, по этой внешней ссылке с помощью ajax-вызова в приложении ionic 2? Затем вы получите токен в своем приложении? – John

+0

Вы считаете, что перенаправление при успешном завершении входа в систему, передающее токен в строке запроса обратно в URL-адрес – teleaziz

+0

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

ответ

0

Это чрезвычайно концептуально, но вы можете использовать плагин cordova inappbrowser, чтобы открыть браузер внутри приложения, прослушать событие выхода, чтобы дождаться, когда пользователь закроет браузер в приложении, и там введет скрипт для извлечения токен из html, что-то вроде:

inAppBrowserRef = undefined; 

showLogin(url) { 

    var target = "_blank"; 

    var options = "location=yes,hidden=yes"; 

    this.inAppBrowserRef = cordova.InAppBrowser.open(url, target, options); 

    with (this.inAppBrowserRef) { 
     addEventListener('exit', this.exitCallBack); 
    } 

} 

exitCallBack(params) { 

    captureToken = "return token = [[jquery to retrieve the token]]"; 



    this.inAppBrowserRef.executeScript({ code: captureToken}, this.executeScriptCallBack); 

    this.inAppBrowserRef.close(); 

    this.inAppBrowserRef = undefined; 

} 

executeScriptCallBack(token) { 

this.token=token; 


} 
+0

извините за мой поздний повтор. пробовал много раз, когда я использую cordova InAppBrowser, у меня есть эталонная ошибка: не могу найти переменную: cordova. Я проверил свой index.html, я включил cordova.js в голову. благодаря! –

+0

Во всяком случае, я использовал window.open (...) вместо cordova.InAppBrowser.open (...). Возможно, еще нужно установить inappbrowser заранее? Я не уверен в этом, но у меня установлен плагин inappbrowser, а window.open() может открыть страницу как в приложении, так и используя системный браузер. Кроме того, если вы хотите вернуться к приложению, используйте этот плагин: [EddyVerbruggen/Custom-URL-схема] (https://github.com/EddyVerbruggen/Custom-URL-scheme), и вы можете найти проходной [здесь] (http://mcgivery.com/using-custom-url-schemes-ionic-framework-app/). Но все же, спасибо @Manu за вашу помощь! –

Смежные вопросы