我正在尝试通过React Native中的Facebook登录来使用Strapi获得授权。通过使用fbsdk的FB登录名,我可以使用户登录,并在成功后将凭据传递给我的应用程序。我现在遇到的问题是将此凭证存储在Strapi中。我可以使用Strapi API manually register users,但随后我必须为每个用户组成一个密码,并处理两个令牌,一个来自Facebook,一个来自Strapi。
我想知道是否有扩展current Providers API的方法,这样我就可以直接将来自Facebook的用户信息存储在Strapi中,而无需执行手动注册用户的额外步骤吗?
我正在使用trapi 3.0.0 beta版。
答案 0 :(得分:1)
由于Strapi没有Apple社交登录(如果添加任何其他社交登录选项,则在App Store中是必需的),因此可以使用Firebase进行登录。
我们使用react-native-firebase库通过Twitter,Facebook,Google和Apple注册用户。 我们可以使用Firebase获取用户令牌并将其发送到服务器,而不是使用Strapi的JWT。
const token = await auth().currentUser.getIdToken(true)
然后,我们在axios标头中设置令牌以发出经过身份验证的请求。
然后稍微自定义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%支持,但现在可以使用。