Oauth 为React Native扩展Strapi Social Auth Providers API

Oauth 为React Native扩展Strapi Social Auth Providers API,oauth,strapi,Oauth,Strapi,我试图通过Strapi在React Native中登录Facebook来实现授权。使用fbsdk的FB登录,我让用户登录,成功后,将凭据传递给我的应用程序。我现在的问题是使用Strapi存储此凭据。我可以使用Strapi API,但接下来我必须为每个用户设置一个密码,并处理两个令牌,一个来自Facebook,一个来自Strapi 我想知道是否有一种方法可以扩展,这样我就可以直接将Facebook的用户信息存储在Strapi中,而不需要手动注册用户 我使用的是strapi 3.0.0 beta版。

我试图通过Strapi在React Native中登录Facebook来实现授权。使用fbsdk的FB登录,我让用户登录,成功后,将凭据传递给我的应用程序。我现在的问题是使用Strapi存储此凭据。我可以使用Strapi API,但接下来我必须为每个用户设置一个密码,并处理两个令牌,一个来自Facebook,一个来自Strapi

我想知道是否有一种方法可以扩展,这样我就可以直接将Facebook的用户信息存储在Strapi中,而不需要手动注册用户


我使用的是strapi 3.0.0 beta版。

因为strapi没有Apple社交登录(如果您添加任何其他社交登录选项,则在App Store中需要),所以您可以使用Firebase

我们使用react native firebase library通过Twitter、Facebook、谷歌和苹果注册用户。 我们可以使用Firebase获取用户的令牌并将其发送到服务器,而不是使用Strapi的JWT

 const token = await auth().currentUser.getIdToken(true)
然后我们在axios报头中设置token来发出经过身份验证的请求

然后稍微自定义permission.js函数,添加一层firebase验证。 像这样:

它也来自文档

希望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');
}

你能详细说明一下你所说的
//验证
是什么意思吗?我尝试使用strapi使用的默认身份验证代码,但即使我硬编码用户,也会返回“未找到用户”id@AmoghJahagirdar我已经为你编辑了答案。希望它能给你更好的方法。
    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');
}