You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter集成Azure认证时遭遇net::ERR_NAME_NOT_RESOLVED重定向错误

Flutter Azure认证重定向失败(net::ERR_NAME_NOT_RESOLVED)解决方案

针对你遇到的Flutter Azure认证重定向失败(net::ERR_NAME_NOT_RESOLVED)问题,本质是自定义URL Scheme未被系统正确识别,浏览器将其当作网页地址解析导致失败。以下是针对性解决方案:

  • 确保URL Scheme的一致性与合法性
    移除Scheme中的特殊符号(如你代码中的***),使用无特殊字符、大小写统一的合法字符串。同时保证三处配置完全一致:

    • Flutter代码中Config的redirectUri
    • AndroidManifest.xml中的android:scheme
    • Azure门户注册的重定向URI
  • 修正AndroidManifest.xml的intent-filter位置
    必须将intent-filter嵌套在Flutter主Activity(MainActivity)标签内部,否则系统无法触发应用跳转。正确配置示例:

    <activity
        android:name=".MainActivity"
        android:launchMode="singleTop"
        android:theme="@style/LaunchTheme"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
        android:hardwareAccelerated="true"
        android:windowSoftInputMode="adjustResize">
        <!-- 原有配置 -->
        <meta-data android:name="flutter_deeplinking_enabled" android:value="true" />
        <intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="atmsal1e7a4f5f-8f9eXXX" android:host="auth" />
        </intent-filter>
    </activity>
    

    注:singleTop启动模式可避免重复创建Activity,提升回调准确性。

  • 调整AadOAuth的webUseRedirect参数
    webUseRedirect: true是Web平台专属配置,移动端需设置为false,让库通过系统浏览器/应用内WebView完成认证后,自动触发Scheme回调:

    config = Config(
      tenant: 'edfdf2d2-ef52-4a80-a647-0ab5f0a44a70',
      clientId: '1e7a4f5f-8f9e-4b86-9f45-a0e250456cd4',
      scope: 'openid profile offline_access',
      navigatorKey: navigatorKey,
      loader: Center(child: CircularProgressIndicator()),
      redirectUri: 'atmsal1e7a4f5f-8f9eXXX://auth',
      webUseRedirect: false, // 修改为false
    );
    
  • 移除手动的onPageFinished解析逻辑
    aad_oauth库会自动处理认证回调与code解析,手动在onPageFinished中处理会干扰库的正常流程。移除该回调后,可通过以下方式处理认证成功后的跳转:

    try{
      oauth = AadOAuth(config);
      await oauth.login();
      // 认证成功后跳转
      Navigator.of(navigatorKey.currentContext!)
          .popUntil((route) => route.isFirst);
      navigatorKey.currentState!.pushReplacement(
        MaterialPageRoute(builder: (_) => HomeWebView()),
      );
    }catch(e){
      print(e);
    }
    
  • 验证自定义Scheme有效性
    使用url_launcher包测试Scheme是否能正常唤起应用:

    import 'package:url_launcher/url_launcher.dart';
    
    void testScheme() async {
      const testUrl = 'atmsal1e7a4f5f-8f9eXXX://auth';
      if (await canLaunchUrl(Uri.parse(testUrl))) {
        await launchUrl(Uri.parse(testUrl));
      } else {
        throw 'Scheme跳转失败,请检查配置';
      }
    }
    

    若无法跳转,需重新检查Scheme拼写、intent-filter位置等配置。

内容的提问来源于stack exchange,提问作者paseo Market

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:13:15