Может ли flutter получить URL-адрес браузера, когда URL-адрес запускается в браузере в приложении?

Я пытаюсь подключить FitbitAPI к своему приложению flutter-firebase. Однако всякий раз, когда я аутентифицирую свою учетную запись, она не перенаправляет обратно в мое приложение. Я использовал неявный поток грантов, так как я не работаю с сервером для работы моего бэкэнда. Однако у меня нет способа записать токен в URL-адрес браузера. Пример этого:

https://MYFIREBASEPROJECT.firebaseapp.com/__/auth/handler#access_token=eyJhbGciOiJIUzI1NiJ9.egfhwerqwjehqwkjehkashdaadadsadybG9jIHJ3ZW123123123sdsadsaasdasdagcnBybyByc2xlIiwiZXhwIjoxNTczMjk5ODQ2LCJpYXQiOjE1NzI2OTUwNDZ9.axlEiYsVicy6l-aEbphcqZlr3bHXUxq6hV2ky5o_3qw&user_id=7SFL86&scope=social+location+weight+nutrition+activity+sleep+settings+heartrate+profile&token_type=Bearer&expires_in=604800

Мне нужен способ получить последний URL-адрес из веб-браузера в приложении. Я использую пакет в браузере приложения: web_browser


person Allen Andre Indefenzo    schedule 02.11.2019    source источник


Ответы (1)


С этим пакетом нет.

Вы можете использовать https://pub.dev/packages/flutter_webview_plugin, который позволяет запускать веб-просмотр внутри ваше приложение и полностью контролировать его.

Или вы можете использовать свой пакет или https://pub.dev/packages/url_launcher для запуска внешнего браузер, который вы не контролируете, но перенаправляет на deeplink, который открывает ваше приложение, и обрабатывает его с помощью https://pub.dev/packages/uni_links

Так что оба метода возможны

РЕДАКТИРОВАТЬ:

Краткое объяснение того, как работает deeplink.

Большинство URL-адресов начинаются с «http: //», что указывает браузеру открыть веб-страницу с доменом URL-адреса. Однако, если вы используете другое начало URL-адреса, браузер будет делать разные вещи. Например, в Android, если вы наберете whatsapp://app в URL-адресе браузера и запустите его, он запустит приложение WhatsApp. То же самое можно сделать для вашего приложения oauth. Единственное, что вам нужно будет реализовать, это настроить приложение для Android. Краткую концепцию можно найти здесь, но для связи deeplink приложения Android с флаттером вам понадобятся uni_links, они также предоставляют руководство на своей странице пакета. Вы можете найти руководство по флаттеру ЗДЕСЬ

person ValdaXD    schedule 02.11.2019
comment
Спасибо, я могу попробовать веб-просмотр, чтобы динамически выполнять вызовы API. Не могли бы вы подробнее рассказать о том, как работает deeplink? Для меня это новая концепция. Спасибо за ваш ответ! - person Allen Andre Indefenzo; 03.11.2019