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

Expo AppleAuthentication模拟器输入正确密码无响应,真机正常求助

Expo + Supabase 苹果登录模拟器卡顿问题

我的后端采用Supabase,按照官方建议使用Expo原生Apple登录方案。我遵循Expo官方原生登录文档(文档标注支持模拟器)操作,还参考了Supabase实现视频,通过EAS完成安装与构建,做了以下配置后在模拟器运行:

  • 在Supabase的Apple认证服务中配置授权客户端ID:host.exp.Exponent,com.myapp.production,com.myapp.dev,与EAS构建的引用完全匹配。
  • 在AppStore Connect的Certificates, Identifiers & Profiles板块,为上述所有Bundle客户端ID启用Sign in with Apple功能。
  • 按要求更新了app.config配置文件。

随后我加入Expo提供的示例代码:

const signInWithApple = async () => {
    try {
      console.log('AppleAuthentication.signInAsync'); // 这行能打印到终端

      const credential = await AppleAuthentication.signInAsync({
        requestedScopes: [
          AppleAuthentication.AppleAuthenticationScope.FULL_NAME,
          AppleAuthentication.AppleAuthenticationScope.EMAIL,
        ],
      });
      console.log({ credential }); // 这行无任何输出

      // 通过Supabase Auth登录
      if (credential.identityToken) {
        const {
          error,
          data: { user },
        } = await supabase.auth.signInWithIdToken({
          provider: 'apple',
          token: credential.identityToken,
        });

        if (!error && user) {
          console.log(user);
          // setSession(user);
        }
      } else {
        throw new Error('No identityToken.');
      }
    } catch (e: unknown) {
      const { code, message } = e as {
        message: string;
        code: 'ERR_REQUEST_CANCELED';
      };
      if (code === 'ERR_REQUEST_CANCELED') {
        console.error(message);
        // 处理用户取消登录流程的情况
      } else {
        // 处理其他错误
      }
    }
  };

当前遇到的问题:在模拟器中输入正确密码后,AppleAuthentication.signInAsync会卡住无响应;但输入错误密码时,原生登录UI会出现密码框抖动的错误反馈,说明能正常连接Apple后端。且该功能在真机上运行完全正常,请问可能的原因是什么?


可能的原因及排查方向

  1. 模拟器测试账户权限不全
    模拟器中使用的Apple测试账户可能未完善基础信息(如完整姓名、绑定邮箱),或未获得完整的Sign in with Apple权限,导致Apple认证流程在后台中断,无法返回凭证。真机使用的是真实完整账户,因此流程正常。

  2. 模拟器登录会话缓存冲突
    模拟器的Apple登录会话可能存在缓存残留,导致新请求无法正常完成。可尝试:

    • 重置模拟器(Device > Erase All Content and Settings)
    • 退出模拟器中的Apple账户,重新登录后再测试
  3. EAS构建的权限配置遗漏
    尽管已在AppStore Connect配置Bundle ID的Sign in with Apple权限,但EAS构建的模拟器包可能未正确加载权限配置。检查app.config.js或app.json中的ios.entitlements是否包含:

    "entitlements": {
      "com.apple.developer.applesignin": ["Default"]
    }
    

    同时清理EAS构建缓存后重新构建,避免缓存导致配置不生效。

  4. iOS模拟器版本的已知bug
    部分iOS模拟器版本(如iOS 16.x部分子版本)存在Sign in with Apple流程的已知bug,会导致输入正确密码后无法完成跳转。可尝试切换到其他稳定版本的模拟器测试。

  5. Supabase客户端ID配置细节问题
    检查Supabase中配置的授权客户端ID是否准确:若使用EAS构建的自定义模拟器包,应确保com.myapp.dev(你的dev环境Bundle ID)配置正确,无多余逗号或空格,与实际构建的Bundle ID完全匹配。


内容的提问来源于stack exchange,提问作者Phil Lucks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:20:55