为 android 配置 Flutter“sign_in_with_apple”时出现问题

Posted

技术标签:

【中文标题】为 android 配置 Flutter“sign_in_with_apple”时出现问题【英文标题】:Problem configuring Flutter "sign_in_with_apple" for android 【发布时间】:2020-12-14 11:46:08 【问题描述】:

我正在尝试设置 Flutter sign_in_with_apple 包,但在 android 端遇到问题。

到目前为止,我已经按照包 README 的说明做了什么:

    设置 glitch.me 服务器。服务器已启动并在 https://MYSERVER.glitch.me/callbacks/sign_in_with_apple 监听我添加了一些控制台日志记录以确保我知道服务器何时被击中。 在苹果开发者控制台上设置 appid 和 serviceid。服务标识符为com.company.foobar.dev.signin 在服务配置中添加了故障回调https://MYSERVER.glitch.me/callbacks/sign_in_with_apple 作为返回 url。 将自述文件中的活动块复制到我的 android 清单中。注意:我不知道要设置什么名称。让它引用包或将其更改为我的应用程序 ID?目前是android:name="com.aboutyou.dart_packages.sign_in_with_apple.SignInWithAppleCallback" 将此块添加到我的 Flutter 服务中:
          "https://MYSERVER.glitch.me/callbacks/sign_in_with_apple";
      final appleIdCredential = await SignInWithApple.getAppleIDCredential(
          scopes: [
            AppleIDAuthorizationScopes.email,
            AppleIDAuthorizationScopes.fullName,
          ],
          webAuthenticationOptions: WebAuthenticationOptions(
              clientId: "com.company.foobar.dev.signin",
              redirectUri: Uri.parse(redirectURL)));

不幸的是,在第 5 步中对 SignInWithApple.getAppleIDCredential 的调用引发异常,我看到 invalid_request 无效的 Web 重定向 url。故障服务器甚至从未被击中,这让我认为即使我在第 4 步(android 清单中的意图名称)搞砸了,问题更可能出现在苹果开发者控制台设置中。但是,我很确定我已经按照 README 进行了操作,但我的想法已经不多了。

【问题讨论】:

请检查您是否针对标识符启用了“使用 Apple 签名”功能,并配置了创建“服务 ID”的必要设置和故障网络应用程序的配置。 好点,但我做到了。 【参考方案1】:

嗯,我放弃了开发包的苹果开发者控制台服务设置(使用 applicationIdSuffix '.dev' 和 bundleid 'com.company.foobar.dev')并为生产风格设置了相同的设置。这个按预期工作。

我现在想知道苹果是否甚至不将请求重定向到 android 的故障服务器,除非该包具有作为 playstore 存在。评论?

【讨论】:

Playstore 的存在不是必需的。我最近实现了这一点,并在未正确启用登录功能或未使用正确的 Web 域和重定向 url 配置服务 ID 时收到完全相同的错误。无效错误表明服务标识配置部分不正确。我遇到了重定向 uri 和深层链接部分的问题,但您的问题似乎并非如此。 关于flutter web项目上的苹果登录有什么想法吗?

以上是关于为 android 配置 Flutter“sign_in_with_apple”时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Flutter 构建 appbundle 时的 PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiEx

Flutter google_sign_in 错误:无法合并 dex

Flutter Web:google_sign_in_web:适用于桌面和 iOS。在 Android Chrome 上失败

颤振:平台异常(sign_in_failed,com.google.android.gms.common.api.ApiException:10:,空)

使用 Firebase 身份验证的 Flutter 应用程序中的 Google sign_in_failed 错误

Flutter - google_sign_in 为 iOS Simulator-x86_64 构建,但尝试链接为 iOS Simulator-arm64 构建的文件 [重复]