在这种情况下,我有一个应用程序,其中:
用户将在移动设备(本例中为 iOS)上使用 Facebook 单点登录 (SSO) 登录。
然后将返回的 Facebook 凭据发送到 NodeJS 服务器(使用相同的 Facebook 应用程序密钥),并且在将它们关联到基于程序的帐户之前,需要将其验证为确实是用户的 Facebook 凭据。
问题:
鉴于可以访问 Facebook 作为身份验证结果返回的所有内容,如何使用这些数据来确认 Facebook 的授权?
在这种情况下,我有一个应用程序,其中:
用户将在移动设备(本例中为 iOS)上使用 Facebook 单点登录 (SSO) 登录。
然后将返回的 Facebook 凭据发送到 NodeJS 服务器(使用相同的 Facebook 应用程序密钥),并且在将它们关联到基于程序的帐户之前,需要将其验证为确实是用户的 Facebook 凭据。
问题:
鉴于可以访问 Facebook 作为身份验证结果返回的所有内容,如何使用这些数据来确认 Facebook 的授权?
你可以做两件事:
Facebook 通常会向您传递一个签名的请求,您可以使用基本的 SHA2 哈希进行检查。如果哈希是正确的,您可以假设用户确实使用 facebook 进行了身份验证。
Facebook 通常还会向您传递一个(短期)访问令牌,您可以使用 graph api 将其交换为长期访问令牌。在此交换完成后,您可以确定用户就是他所说的那个人。
https://graph.facebook.com/me?access_token=TOKENGOESHERE
如果返回一个用户,并且他们的 ID 是客户声称的,那么他们很可能就是他们所说的那个人。