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

Flutter Android端Sign In with Apple报错:缺失初始状态

Android端Sign with Apple登录"missing initial state"错误修复方案

问题本质

这个错误是Android端通过WebView完成Apple OAuth登录流程时,sessionStorage无法正常读写导致的。sign_in_with_apple插件在Android端依赖WebView存储登录请求的初始状态值,一旦WebView的sessionStorage被权限限制、缓存异常或配置冲突影响,就会触发该提示。

修复步骤

1. 确认基础权限配置

在AndroidManifest.xml中确保添加必要权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Android 13+无需额外存储权限,但INTERNET权限是WebView正常运行的前提。

2. 配置WebView存储规则

如果应用自定义了WebView,必须开启sessionStorage支持:

WebView(
  initialUrl: '...',
  javascriptMode: JavascriptMode.unrestricted,
  onWebViewCreated: (controller) {
    // 主动触发sessionStorage初始化,避免异常
    controller.runJavascript('window.sessionStorage.getItem("test")');
  },
);

若使用插件自带WebView,需在AndroidManifest.xml中为插件回调页面添加配置,确保硬件加速开启:

<application
  ...
  android:hardwareAccelerated="true">
  <activity
    android:name="com.aboutyou.dart_packages.sign_in_with_apple.SignInWithAppleCallback"
    android:exported="true"
    android:launchMode="singleTask">
    <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="你的应用URL Scheme" />
    </intent-filter>
  </activity>
</application>

3. 校验URL Scheme与回调配置

  • Apple开发者后台:为App ID配置Sign in with Apple功能,回调URL格式需与应用Scheme匹配(如your-app-scheme://callback)
  • Flutter代码中调用signInWithApple时,确保redirectUri参数与后台一致:
final credential = await SignInWithApple.getAppleIDCredential(
  scopes: [AppleIDAuthorizationScopes.email, AppleIDAuthorizationScopes.fullName],
  redirectUri: Uri.parse('your-app-scheme://callback'),
);

4. 清理WebView缓存

在设备设置中进入应用 -> 你的应用 -> 存储 -> 清除缓存,解决因缓存 corruption 导致的sessionStorage异常。

5. 调整插件版本

尝试升级到插件最新稳定版,或降级至4.2.0版本(部分开发者反馈该版本在Android端兼容性更优),修改pubspec.yaml后执行flutter pub get。

6. 检查设备隐私限制

部分国产设备(小米、华为等)的隐私保护模式会限制WebView存储:

  • 进入设置 -> 隐私保护 -> 特殊权限,确保应用被允许内联网访问
  • 关闭"限制广告跟踪"类选项,避免WebView功能被拦截

内容的提问来源于stack exchange,提问作者Khyati Modi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 13:03:21