面向服务器端的Facebook Access-Token

时间:2012-11-22 18:31:50

标签: facebook facebook-graph-api facebook-c#-sdk facebook-ios-sdk facebook-android-sdk

我正在尝试为用户的Facebook资源(照片/相册/等)创建服务器端访问。 我希望用户使用原生移动应用程序验证一次,并且服务器无需用户互动即可访问用户数据。

我正在努力了解我需要采取的步骤才能使其发挥作用。

我读过Facebook:Login for Server-side Apps但我无法理解如何使用那里提出的方案 - 因为我的服务器与用户交互无关(我无法重定向用户到某个登录对话框) - 服务器在后台执行自己的操作,无论用户是否正在使用其移动应用程序。例如,在令牌到期时我该怎么做?

更多的是,我希望用户能够在移动设备本身上执行直接的Facebook操作,而无需服务器干预。

正如我所看到的,这是我期望的流程:

  1. 用户启动原生移动应用程序。
  2. 用户使用本机移动应用上的Facebook SDK进行身份验证。
  3. 用户收到特殊令牌,可以在服务器端转换为访问令牌
  4. 令牌将被发送到服务器并存储在那里。
  5. 如果服务器需要访问用户的Facebook数据,它会使用此特殊令牌并将其转换为访问令牌。
  6. 当令牌过期时 - 服务器可以使用特殊令牌对其进行扩展,而无需任何用户交互。
  7. 验证后应从移动应用程序向服务器发送哪些数据。那么服务器应该如何使用这些数据随时访问用户的Facebook资源?

    我正在使用C#Facebook SDK作为服务器。但我认为这并不重要,我需要了解机制。

1 个答案:

答案 0 :(得分:5)

如果用户不继续使用该应用程序,则令牌过期。这是设计 - 如果用户停止使用该应用程序,应用程序不应继续访问用户的帐户。

当用户登录您的应用程序时,会向您的应用程序提供一个令牌,以及该令牌的到期日期。您可以在客户端或服务器上使用该令牌,直到它过期为止。但是,如果用户不继续使用您的应用程序,则服务器无法扩展令牌。

如果用户继续使用您的应用程序,您将有机会更新服务器令牌。例如,在Android和iOS SDK中,如果用户使用您的应用程序发出facebook请求,则会自动刷新令牌。那时,您可以将刷新的令牌传输到您的服务器。