我正在开发一个 Flutter 应用程序,该应用程序的仪表板带有 Outlook 图标。当用户单击 Outlook 图标时,我会收到一个登录 URL,该 URL 成功在浏览器中打开并登录到用户的 Outlook 帐户。网址看起来像这样:
https://login.microsoftonline.com/common/oauth2/authorize?client_id=***********&redirect_uri=**********&response_mode=form_post&response_type=code+id_token&scope=openid&msafed=1&msaredir=1&login_hint=*********&client-request-id=************&protectedtoken=true
问题: 我想在登录状态下打开用户设备(如果已安装)上的本机 Outlook 应用程序,从而无需再次登录。如果未安装 Outlook 应用程序,我想将用户重定向到 Google Play 商店来安装它。
我尝试过的: WebView:我可以在 WebView 中打开登录 URL,但它仅通过浏览器登录用户,而不会打开 Outlook 应用程序。
外部浏览器:使用 url_launcher 在外部浏览器中打开登录 URL 适用于 Web 版 Outlook,但我想打开本机应用程序。
URL 方案:我尝试查看 ms-outlook:// URL 方案,但无法正确实现登录状态转换。
所需的解决方案: 如果安装了 Outlook 应用程序,我的 Flutter 应用程序应使用 OAuth 登录流程中的 SSO 直接打开处于登录状态的 Outlook 应用程序。 如果未安装该应用程序,则应打开 Google Play 商店供用户安装 Outlook。
我尝试过的Flutter包:
套餐
external_app_launcher
会有帮助。com.microsoft.office.outlook
添加到 <queries>
中的 AndroidManifest.xml
。