Android Sign in with apple and firebase flutter

Posted

技术标签:

【中文标题】Android Sign in with apple and firebase flutter【英文标题】: 【发布时间】:2020-10-29 11:38:19 【问题描述】:

我正在使用 sign_in_with_apple 并且我的登录功能适用于 ios,但 android 组件无法正常工作。

我已经查看了提出此问题的文档和问题,但没有明确的答案。 https://github.com/aboutyou/dart_packages/tree/master/packages/sign_in_with_apple

我被这个插件的部分文档困住了:

关于您的服务器上的 Sign in with Apple 回调(在 WebAuthenticationOptions.redirectUri),安全地重定向回您的 使用以下 URL 的 Android 应用:

intent://callback?$PARAMETERS_FROM_CALLBACK_ BODY#Intent;package=YOUR.PACKAGE.IDENTIFIER;scheme=signinwithapple;end

CALLBACK BODY 的 PARAMETERS 应该用 urlencoded 填充 您在端点上从 Apple 的服务器接收到的正文, 和包 应更改参数以匹配您的应用程序的包标识符(如 发布于 Google Play 商店)。离开回调路径并 signinwithapple 方案未受影响。

此外,在客户端处理传入凭据时, 确保只覆盖用户的当前(访客)会话 一旦您自己的服务器验证了传入的代码参数,例如 您的应用不易受到恶意传入链接的影响(例如 注销当前用户)。

这部分内容是: PARAMETERS FROM CALLBACK BODY 应该填充您在端点上从 Apple 服务器收到的 urlencoded 正文。我不确定如何获取此信息并正确格式化 redirectURL 的 PARAMATERS_FROM_CALLBACK_BODY 部分以使其适用于 Android。

【问题讨论】:

您好,您对此有任何更新吗?我也卡在那里。谢谢。 我也很困惑这一步该怎么做。谁能解释一下? 【参考方案1】:

我也有同样的问题,我昨天在他们的仓库中打开了一个issue。

我不确定您是否尝试设置自己的后端服务器以进行回调,但要回答您的问题,您需要理解的部分仅适用于需要实现自己的 API 的人用于回调。

我确实通过以下步骤让 Apple Sign In for Android 工作(通过网络浏览器身份验证):

注意由于您已经完成了 iOS 部分的工作,所以我假设您已经完成了基本配置

    根据他们的document 设置 glitch.com 服务,这部分很容易理解。

    然后您希望将您的 signInWithApple 调用实现为以下reference 注意:SERVER_AS_PER_THE_DOCS 需要根据您的故障服务进行更新。

    Future<FirebaseUser> signInWithApple() async 
    var redirectURL = "https://SERVER_AS_PER_THE_DOCS.glitch.me/callbacks/sign_in_with_apple";
    var clientID = "AS_PER_THE_DOCS";
    final appleIdCredential = await SignInWithApple.getAppleIDCredential(
        scopes: [
          AppleIDAuthorizationScopes.email,
          AppleIDAuthorizationScopes.fullName,
        ],
        webAuthenticationOptions: WebAuthenticationOptions(
            clientId: clientID,
            redirectUri: Uri.parse(
                redirectURL)));
    final oAuthProvider = OAuthProvider(providerId: 'apple.com');
    final credential = oAuthProvider.getCredential(
      idToken: appleIdCredential.identityToken,
      accessToken: appleIdCredential.authorizationCode,
    );
    final authResult =
        await SignInUtil.firebaseAuth.signInWithCredential(credential);
    return authResult.user; 
    

【讨论】:

如果不使用任何“Glitch”,有没有办法让重定向 url 工作? @JonasZebari 当然可以,Glitch 只是您可以利用的免费主机服务,但您确实有某种服务来处理重定向。 为什么 firebase 不为我们处理这个问题?在应用身份验证之前,它不是要求所有必要的凭据(在控制台中)吗?这真的很糟糕:(

以上是关于Android Sign in with apple and firebase flutter的主要内容,如果未能解决你的问题,请参考以下文章

C# Sign In With Apple苹果登陆后端验证

Sign in with Apple(苹果授权登陆)服务端验证

使用 Apple 登录按钮标题始终显示“SIGN_IN_WITH_APPLE”

如何更改“Sign In with Apple”按钮的宽度?

Sign In With Apple

如何在 Sign In With Apple 中验证 realUserStatus 值