为React Native扩展Strapi Social Auth Providers API

时间:2019-07-18 14:54:30

标签: oauth strapi

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

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

我正在使用trapi 3.0.0 beta版。

1 个答案:

答案 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%支持,但现在可以使用。