首页 > 编程问答 >在我的 Flutter 应用程序中尝试通过 sso 登录时,我看到了一个黑屏

在我的 Flutter 应用程序中尝试通过 sso 登录时,我看到了一个黑屏

时间:2024-05-31 23:33:40浏览次数:24  
标签:android flutter azure appauth

我正在调用 android 上 flutter_appAuth 软件包的 authorize 方法。

下面是该方法的外观:

final result = await FlutterAppAuth(.authorize())
final result = await FlutterAppAuth().authorize(
    授权请求
      SSOConstants.clientId、
      SSOConstants.redirectUri、
      授权服务配置AuthorizationServiceConfiguration(
        授权端点授权端点: SSOConstants.authorizationEndpoint、
        tokenEndpoint:SSOConstants.tokenEndpoint、
      ),
      scopes:scopes:SSOConstants.scopes.split(' ')、
    ),
  );

调用 authorize 方法后,我被重定向到 "login.microsoftonline.com",然后出现黑屏或屏幕故障。加载完成后似乎就挂在那里。我没有收到任何错误返回,也没有收到任何关于出错原因的反馈。

下面是屏幕显示的内容: 在此输入图片描述

下面是我的 build.gradle 行:

 manifestPlaceholders = [
        appAuthRedirectScheme': "msauth
    ]
我的 uri 格式是:

msauth://com.example.test/1234
我没有收到任何错误反馈。没有异常。我在调试控制台中得到的信息是:

D/EGL_emulation( 3984): app_time_stats: avg=901.00ms min=331.03ms max=1470.97ms count=2

D/EGL_emulation( 3984): app_time_stats: avg=145.78ms min=50.38ms max=439.36ms count=7 W/allc.myunifycrm( 3984):访问隐藏方法 Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z(不支持,反射,允许) W/allc.myunifycrm( 3984):访问隐藏方法 Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V(不支持,反射,允许) W/Parcel ( 3984):期望装订,但得到空值! D/EGL_emulation( 3984): app_time_stats: avg=67.71ms min=30.60ms max=203.09ms count=15 D/EGL_emulation( 3984): app_time_stats: avg=113.54ms min=41.58ms max=378.01ms count=9

我正试图在本地主机的移动应用程序上使用 SSO 登录,但在尝试登录时,我看到的不是帐户选择器或 microsoft 登录对话,而是一个黑色或闪烁的屏幕。此外,iOS 系统运行正常。


出现黑屏或闪烁屏幕的问题表明你的 Flutter 应用在重定向回后无法正确处理来自微软登录流程的响应。这可能是由于重定向 URI 或 Android 配置中的设置问题造成的。

以下是解决此问题的步骤:

  1. 验证你的重定向 URI:

  2. 确保你的 Azure Active Directory (AAD) 应用程序注册中的重定向 URI 与你的 Flutter 代码和 build.gradle 文件中指定的 URI 完全 匹配。这包括方案( msauth )、程序包名称和路径。

  3. 在你的 AAD 应用程序注册中,重定向 URI 应添加到“ 身份验证 ”>“ 平台配置 ”>“ Android ”下的“ 重定向 URI ”字段。
  4. 你的重定向 URI 应类似于: msauth://com.example.test/1234

  5. 处理 AndroidManifest.xml 中的 intent-filter

  6. 在你的 android/app/src/main/AndroidManifest.xml 文件中,确保你的主 Activity 中有正确的 intent-filter 来处理重定向: xml <activity ... android:launchMode="singleTop"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="msauth" android:host="com.example.test" android:path="/1234" /> </intent-filter> </activity>

  7. 务必将 android:scheme android:host android:path 值替换为你的重定向 URI 的实际值。

  8. 清理并重建:

  9. 有时,缓存数据可能会导致问题。清理你的项目并重建它: bash flutter clean flutter build apk --release

  10. 启用日志记录进行调试:

  11. 为你的 Flutter 应用程序和 flutter_app_auth 包启用详细日志记录。这可以帮助你查明问题的原因。

  12. 使用 print 语句或日志记录库来记录来自 authorize 方法的响应以及出现的任何错误。

  13. 测试一个简单的示例:

  14. 尝试使用一个简单的示例 Flutter 应用程序并使用 flutter_app_auth 进行身份验证。这可以帮助你确定问题是否与你的代码或配置有关。

如果在遵循这些步骤后问题仍然存在,请提供以下附加信息以便进一步帮助:

  • 来自你的 Flutter 应用程序和 Android Studio 控制台的完整日志输出。
  • 你正在使用的 flutter_app_auth 包的版本。
  • 你正在使用的 Android 设备和 Android 版本。

标签:android,flutter,azure,appauth
From: 78560529

相关文章

  • Flutter 中的 Opacity 小部件:全面指南
    Flutter中的Opacity小部件:全面指南在Flutter中,动画和视觉效果是提升用户体验的重要手段。Opacity小部件允许你改变子组件的透明度,从而实现淡入、淡出或其它透明度相关的动画效果。本文将提供Opacity的全面指南,帮助你了解如何使用这个小部件来增强你的Flutter应用的视觉......
  • Flutter 中的 LimitedBox 小部件:全面指南
    Flutter中的LimitedBox小部件:全面指南Flutter是一个功能强大的UI框架,它提供了大量的小部件来帮助开发者构建美观且响应式的用户界面。在Flutter的布局小部件中,LimitedBox是一个不太常见但非常有用的组件,它可以用来限制其子组件的最大尺寸。本文将详细介绍Limited......
  • Android Studio 已经安装 NDK ,但是软件提示找不到。
    AndroidStudio已经安装NDK,但是软件提示找不到。推荐安装win11android-studio-ide-192.6392135-win64jdk-8u381-windows-x64.exeNDKversionis20.0.5594570提示找不到ndk解决办法:在GradleScripts下面的local.properties文件中,手动添加ndk路径:ndk.dir=C:\User......
  • Android Studio ERROR: Installed Build Tools revision 34.0.0 is corrupted. Remove
    AndroidStudio错误提示:ERROR:InstalledBuildToolsrevision34.0.0iscorrupted.RemoveandinstallagainusingtheSDKManager.解决办法:在C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\34.0.0目录中找到d8.bat,将文件名修改为dx.bat在C:\Us......
  • Android高通 12/13 录屏流程代码位置
     需求如下图实现系统录屏功能 frameworks/base/packages/SystemUI/src/com/android/systemui/screenrecord涉及代码ScreenRecordDialog#startBtnRecordingService#start#end ScreenMediaRecorder.java1、点击开始录屏frameworks/base/packages/SystemUI/src/......
  • 小白也能听懂的Flutter
    import'package:flutter/material.dart';voidmain(){runApp(MyApp());}classMyAppextendsStatelessWidget{@overrideWidgetbuild(BuildContextcontext){returnconstMaterialApp(home:Scaffold(appBar:null,......
  • Android桌面Launcher源码浅析
    在Android启动过程-万字长文(Android14)中介绍了Android系统的启动过程,本篇文章将继续介绍桌面应用Launcher。一、Launcher介绍在Android启动过程-万字长文(Android14)中提到Launcher是Android系统启动后,由SystemServerActivityManagerService(AMS)加载的第一个应用程序L......
  • ChatTTS,语气韵律媲美真人的开源TTS模型,文字转语音界的新魁首,对标微软Azure-tts
    前两天2noise团队开源了ChatTTS项目,并且释出了相关的音色模型权重,效果确实非常惊艳,让人一听难忘,即使摆在微软的商业级项目Azure-tts面前,也是毫不逊色的。ChatTTS是专门为对话场景设计的文本转语音模型,例如大语言助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万......
  • 如何通过管道使用 yaml 将 Azure 库变量传递给 Cypress?
    我希望将Azure库中的变量传递给cypress,这样我就可以拥有多个阶段(暂存&生产)我尝试了以下方法:通过一个名为environment.json的文件使用固定装置,该文件看起来像这样:{WEB_APP_BASE_URL":"https://blight-town.com"//像我这样的迷失者的"默认"URL}在Azure中,我有一个包......
  • AndroidStudio升级Gradle到7+,compileSdkVersion 33+
    一、概述由于需求方的要求/需要,主动或被动的需要升级android的编译环境到CompileSdkVersion33。此时直接更改android项目的编译版本会报错,as版本过低或者gradle插件太老了等。也会遇到一些这样那样的bug,这一篇做一下简单的总结升级方式:以更......