gpt4 book ai didi

react-native - 在使用 Firebase 身份验证的 Expo React native 应用程序中添加 “Sign In with Apple”

转载 作者:行者123 更新时间:2023-12-05 06:23:26 26 4
gpt4 key购买 nike

我有一个使用 Expo(托管,非分离)并使用 Firebase 身份验证提供 Facebook 登录和电子邮件/密码登录的 React native 应用。

我现在需要根据 Apple 的新规则实现“使用 Apple 登录”。

世博会提供了一个way这样做,它起作用了,返回了用户的信息。但是因为所有用户都是通过 Firebase 身份验证管理的,所以我需要获取 Apple 发送给我的内容并将其传递给 Firebase 身份验证。

Firebase docs说明如何使用 signInWithCustomToken 执行此操作。但这需要我创建 token 。在 Node 中这很简单,但这个应用程序是无服务器的,我还没有找到可以在客户端生成 RS256 token 的工具。从 Firebase 文档看来,RS256 是一项要求。我试过使用 expo-jwt使用 HS256 和 Firebase 返回 token 格式错误的错误。但除了使用 HS256 而不是 RS256 之外,我看不到其他可能的问题。 token编解码成功如下。

const appleJwt = JWT.encode(
{
familyName: 'M',
givenName: 'Greg',
email: 'apple_user@example.com',
alg: 'HS256',
iss:
'https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit',
sub: serviceAccountEmail,
aud: serviceAccountEmail,
iat: Math.floor(Date.now() / 1000),
exp: Math.floor(Date.now() / 1000) + 3600,
uid: appleUid
},
key,
{
algorithm: 'HS256'
}
);
console.log('TCL: loginWithApple -> appleJwt', appleJwt);
const appleJwtDecoded = JWT.decode(appleJwt, key);
console.log('TCL: loginWithApple -> appleJwtDecoded', appleJwtDecoded);

只有当我尝试将它与 Firebase 身份验证一起使用时,它才会返回 token 格式错误的错误。

return Firebase.auth().signInWithCustomToken(appleJwt).then(...

请注意,keyserviceAccountEmail 是从 firebase 控制台检索的。

我想知道是否有一些我忽略的更简单的解决方案。社区正在等待 Firebase 的消息,看看他们是否会提供开箱即用的 Apple 登录,就像他们为其他提供商所做的那样,所以也许我只需要耐心等待。但我更愿意找到解决方案。

非常感谢您的任何建议。

2019-10-15更新

我使用 API 构建了一个简单的节点服务器,我的应用程序可以使用该 API 生成带有 RS256 的 token ,但是当我将 token 传递给 signInWithCustomToken 时,Firebase 仍然响应该 token 格式错误。看不出有什么问题。

因此,由于我构建了节点服务器,所以我只配置了 Firebase Admin SDK 并使用了 provided createCustomToken 生成 token 。当我将它传递给 signInWithCustomToken 时,Firebase 现在接受它,这是我的问题,所以这个问题已为我解决。第一次自定义 Firebase 登录成功后,我将所有用户数据写入 Firestore。对于后续登录,它只会更新 Firestore 中的上次登录日期。希望 Firebase 仍将很快提供他们自己的解决方案,因为为此单独设置一个节点服务器并不理想。

最佳答案

关于react-native - 在使用 Firebase 身份验证的 Expo React native 应用程序中添加 “Sign In with Apple”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58334328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com