首页 > 解决方案 > Ionic 3 原生 facebook 登录流程

问题描述

我刚刚使用本机 facebook 登录插件完成了 Ionic 3 中的登录过程。一切似乎都很好。
我获取我的 Facebook 数据并使用存储插件存储它们。

这对我来说开始了奇怪的部分。

我希望下次用户打开应用程序时能够自动通过身份验证阶段,我不确定哪个是正确的解决方案。

解决方案 1
当用户第一次登录时存储数据,所以下次他在app.component.tsi 中打开应用程序时检查我存储的数据(前 userId)是否存在。

storage.get('userID').then((val) => {
   this.isLoggedIn = true;
   this.setRoot(MainPage);
});

解决方案 2
我使用该getLoginStatus函数,如果返回response.status === 'connected',我假设用户之前已通过身份验证并且我存储的数据存在。

其中一个被认为是更好的方法吗?
您使用不同的解决方案吗?
在这种情况下我是否出于某种原因需要访问令牌,或者这仅对 Web 应用程序有用?

标签: facebookionic-frameworkoauth-2.0ionic3facebook-login

解决方案


我会说这取决于您正在寻找的安全性,您的应用程序是否处理敏感信息?

如果不是,那么您可以简单地存储 userId (您的解决方案 1)并且您很好。

如果您正在处理敏感数据,那么您应该考虑拥有一个更安全的系统(例如,您必须考虑用户可能会丢失其手机,因此用户可能希望切断访问权限......)使用 facebook 处理可能的方法:

  • 将您从 facebook 身份验证获得的 access_token 发送到远程服务器,您可以在其中检查它(此处是更多信息的链接
  • 将令牌保存到与您的新用户相对应的服务器(例如 json Web 令牌)
  • 发回这个令牌并保存在本地
  • 对每个身份验证检查令牌是否仍然有效的服务器端

我建议您阅读 Josh Morony 编写的教程:

https://www.joshmorony.com/using-json-web-tokens-jwt-for-custom-authentication-in-ionic-2-part-2/

https://www.joshmorony.com/creating-role-based-authentication-with-passport-in-ionic-2-part-2/

https://www.joshmorony.com/basic-security-for-ionic-cordova-applications/


推荐阅读