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