当前位置: 首页 > 面试题库 >

FB身份验证的正确方法

乐正心水
2023-03-14
问题内容

我的项目使用Node.js和Express,但问题在于通用方法。

我们的用户全部来自FB,除FB外,我们没有其他任何身份验证。我们需要将某些操作与特定的FB用户相关联,还需要他们的令牌才能与FB通信。

目前, 我们这样做:

  • 用户来到页面
  • 有一些 看不见的 块:一个带有占位符,用于存储用户的化身和姓名(“已登录”),另一个带有用于触发FB登录的按钮(“已退出”)
  • 使用FB JS SDK,我们检查用户的登录状态。如果已 连接 (实际上意味着:登录FB,验证了我们的应用程序并提供了我们需要的所有权限),我们将获得用户名和FB ID并显示“已登录”块。否则,显示“已注销”框
  • 对于登录用户的某些操作,用户的access_token通过AJAX传递到服务器(不用担心,这里是HTTPS),并由服务器代码用于执行操作,如发布到用户墙或其他操作
  • FB登录按钮由JS处理,并调用FB.login()
  • 在JS authResponseChanged事件上,采取了明显的措施(显示/隐藏已登录/退出的块)

优点 :我们始终知道用户的状态有效(令牌的TTL超过正常页面的生存期,因此在这里很好)。

我们不太喜欢的是客户端令牌是短暂的(是的,我们可以交换它们,但是我们不想找到其他替代方案)通常需要向FB发出多个请求(1-加载JS
SDK,2-获取登录状态),直到我们可以显示一些内容为止。直到我们网站的“登录”块为空。

问题是什么?

我们正在寻找一种最佳的方式来使用一些服务器端代码,并在确定用户已登录时至少呈现用户的名称和头像。

我可以想象这样的方案:

  • 使用服务器端身份验证(带有重定向)获取长期有效的令牌并将其持久保存在服务器上
  • 在会话中保存用户状态(登录/注销,FB ID,名称)
  • 如果会话在服务器上处理模板时具有登录状态,呈现名称和头像

关注点

  • 如果用户从FB登录了我们的帐户或撤消了App的权限,我们怎么知道它以及我们应该何时对其进行检查(检查每N个请求?每X小时检查一次?仅在令牌在Y小时内到期时检查?)
  • 如果我们还是在渲染任何模板之前从服务器检查用户的状态(在官方示例中就是这种情况),这会使速度变慢,对吧?因为我认为在繁忙时间FB API调用可能会比较慢。

问题答案:

使用JS SDK是“实时”了解用户状态的唯一可行方法。(用引号引起来的“实时”,因为FB.getLoginStatus的结果也将被缓存-
如果一个人希望它始终是准确的,则必须使用第二个参数设置为true。)

如果您设置了JS SDK来在您的域下设置cookie,那么PHP SDK可以确定用户的登录状态,而无需通过HTTP进行任何API查找-
它仅从cookie中读取用户ID,因此Facebook :: getUser ()将获得您的用户ID。这足以显示图片-但对于用户名,仍然需要API请求。

在这里,您可以选择 一次 请求名称,然后将其保存到会话中。如果在下一个请求中JS
SDK指示用户不再连接,则可以从页面上删除登录信息和/或强制重新加载(然后清除会话),以返回到登录状态。



 类似资料:
  • 身份验证 PDF版下载 企业应用中的URL链接可以通过OAuth2.0验证接口来获取员工的身份信息。 通过此接口获取员工身份会有一定的时间开销。对于频繁获取员工身份的场景,建议采用如下方案: 企业应用中的URL链接直接填写企业自己的页面地址; 员工跳转到企业页面时,企业校验是否有代表员工身份的cookie,此cookie由企业生成; 如果没有获取到cookie,重定向到OAuth验证链接,获取员工

  • 本文向大家介绍写一个验证身份证号的方法相关面试题,主要包含被问及写一个验证身份证号的方法时的应答技巧和注意事项,需要的朋友参考一下 粗暴型: 只考虑位数、最后的 x \d{17}[\dXx] 一般型: 前 6 位区号 \d{6} 中间年份 \d{4} 可以增加年份判断 月份 01-12 月 0[1-9]|1[0-2] 日期 01-31 日 0[1-9]|[12][0-9]|3[01] 顺序码 \d

  • 我在REST api中使用JWT承载身份验证方案。为了在成功身份验证后将jwt令牌返回给客户端,目前我在正文中使用访问令牌响应,如中所述https://www.rfc-editor.org/rfc/rfc6750#page-10 但是也需要在其他HTTP请求中返回令牌,例如已经存在正文的注册。因此,正在考虑为其使用“身份验证信息”标头。但是承载方案没有在任何地方指定“身份验证信息”标头。我应该使用

  • 本文向大家介绍iOS判断身份证号码是否正确的方法,包括了iOS判断身份证号码是否正确的方法的使用技巧和注意事项,需要的朋友参考一下 ①根据百度百科中身份证号码的标准实现该方法 ②该方法只能判断18位身份证,且不能判断身份证号码和姓名是否对应(要看姓名和号码是否对应,应该有大量的数据库做对比才能实现) ③直接copy这段代码,就能通过调用这个方法判断身份证号码是否符合标准,非常easy 以上就是本文

  • 授权服务器可以支持任何与其安全要求匹配的合适的HTTP身份验证方案。当使用其他身份验证方法时,授权服务器必须定义客户端标识(注册记录)和认证方案之间的映射。

  • 问题内容: 我正在尝试在Node.js中使用Socket.IO,并试图允许服务器为每个Socket.IO客户端赋予一个身份。由于套接字代码不在http服务器代码的范围内,因此无法轻松访问已发送的请求信息,因此我假设在连接期间需要将其发送出去。什么是最好的方法 1)将有关谁通过Socket.IO连接到服务器的信息 2)验证他们说的是谁(如果正在使事情变得更容易,我目前正在使用Express) 问题答