gpt4 book ai didi

oauth - 为 React Native 扩展 Strapi Social Auth Providers API

转载 作者:行者123 更新时间:2023-12-04 15:43:02 28 4
gpt4 key购买 nike

我正在尝试通过 Strapi 在 React Native 中通过 Facebook 登录获得授权。使用 FB 登录和 fbsdk,我让用户登录,成功后,将凭据传递给我的应用程序。我现在遇到的问题是使用 Strapi 存储此凭据。我可以 manually register users使用 Strapi API,但随后我必须为每个用户设置一个密码并处理两个 token ,一个来自 Facebook,一个来自 Strapi。

我想知道是否有扩展 current Providers API 的方法这样我就可以直接将来自 Facebook 的用户信息存储在 Strapi 中,而无需通过手动注册用户这一额外步骤?

我使用的是 strapi 版本 3.0.0 beta。

最佳答案

由于 Strapi 没有 Apple 社交登录(如果您添加任何其他社交登录选项,则在 App Store 中是必需的),您可以使用 Firebase 完成。

我们使用 react-native-firebase 库通过 Twitter、Facebook、Google 和 Apple 注册用户。我们可以使用 Firebase 获取用户的 token 并将其发送到服务器,而不是使用 Strapi 的 JWT。

 const token = await auth().currentUser.getIdToken(true)

然后我们在 axios header 中设置 token 以发出经过身份验证的请求。

然后稍微自定义permission.js函数https://strapi.io/documentation/v3.x/guides/jwt-validation.html#customize-the-jwt-validation-function , 添加一层 firebase 验证。像这样:

admin.auth().verifyIdToken(idToken)
.then(function(decodedToken) {
let uid = decodedToken.uid;
// validate
}).catch(function(error) {
// Handle error
});

它也来自文档 https://firebase.google.com/docs/auth/admin/verify-id-tokens

希望 Strapi 将来会增加对 React Native 的 100% 支持,但目前它可以工作。

编辑:路径是extensions/users-permissions/config/policies/permissions.js以下是您可以如何处理它。只需验证您是否在 firebase 中有用户,然后通过 return 触发 next()

    try {
const { uid } = await admin.auth().verifyIdToken(token);
const user = await strapi.plugins['users-permissions'].services.user.fetch({ uid });

ctx.state.user = user;

console.log('Firebase token decode success = ' + uid);
return await next();
} catch (err) {
// console.log('Firebase token decode failure');
}

关于oauth - 为 React Native 扩展 Strapi Social Auth Providers API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57097415/

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