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的主要内容,如果未能解决你的问题,请参考以下文章
Sign in with Apple(苹果授权登陆)服务端验证
使用 Apple 登录按钮标题始终显示“SIGN_IN_WITH_APPLE”