我正在尝试创建对用户 Facebook 资源(照片/相册/等)的服务器端访问。 我希望用户使用其 native 移动应用程序进行身份验证一次,并且服务器无需用户交互即可访问用户的数据。
我正在尝试了解要使其发挥作用所需采取的步骤。
我已阅读 Facebook 的:Login for Server-side Apps但我无法理解如何使用其中提出的场景 - 因为我的服务器与用户交互无关(我无法将用户重定向到某个登录对话框) - 服务器正在执行自己的操作无论用户是否使用其移动应用程序,都会在后台进行操作。例如, token 过期后我应该做什么?
更重要的是,我希望用户能够在移动设备上直接执行 Facebook 操作,而无需服务器干预。
据我所知,这是我期望的流程:
- 用户启动 native 移动应用程序。
- 用户在 native 移动应用上使用 Facebook 的 SDK 进行身份验证。
- 用户收到一个特殊 token ,可以在服务器端将其转换为访问 token 。
- token 将发送到服务器并存储在那里。
- 如果服务器需要访问用户的 Facebook 数据,它会使用此特殊 token 并将其转换为访问 token 。
- 当 token 过期时 - 服务器可以使用特殊 token 对其进行扩展,无需任何用户交互。
身份验证后应将哪些数据从移动应用程序发送到服务器。服务器应该如何使用这些数据随时访问用户的 Facebook 资源?
我正在使用 C# Facebook SDK 作为服务器。但我认为这并不重要,我需要了解其中的机制。
最佳答案
如果用户不继续使用该应用程序, token 就会过期。这是设计使然 - 如果用户停止使用应用程序,应用程序不应继续访问用户的帐户。
当用户登录您的应用程序时,系统会向您的应用程序提供一个 token 以及该 token 的到期日期。您可以从客户端或服务器使用该 token ,直至其过期。但是,如果用户不继续使用您的应用程序,您的服务器无法执行任何操作来扩展 token 。
如果用户继续使用您的应用程序,您将有机会更新您的服务器 token 。例如,在 Android 和 iOS SDK 中,如果用户使用您的应用程序发出 Facebook 请求, token 会自动刷新。此时,您可以将刷新后的 token 传输到您的服务器。
关于服务器端的 Facebook 访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13518354/