面向服务器端的Facebook Access-Token

Yan*_*niv 3 facebook facebook-graph-api facebook-c#-sdk facebook-android-sdk facebook-ios-sdk

我正在尝试创建服务器端访问用户的Facebook资源(照片/专辑/等).我希望用户使用其原生移动应用程序进行一次身份验证,并且服务器将能够在没有用户交互的情况下访问用户的数据.

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

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

更重要的是,我希望用户能够在没有服务器干预的情况下在移动设备上执行直接的Facebook操作.

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

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

验证后应从移动应用程序向服务器发送哪些数据.那么服务器应该如何使用这些数据随时访问用户的Facebook资源?

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

rig*_*ren 5

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

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

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