Facebook服务器端访问令牌

3
我正在尝试创建一个服务器端访问用户Facebook资源(照片/相册等)的方法。我希望用户使用其本地移动应用程序一次进行身份验证,服务器能够在无需用户交互的情况下访问用户的数据。
我正在努力理解需要采取哪些步骤才能使其正常工作。
我已经阅读了Facebook的:服务器端应用程序登录,但我无法理解如何使用其中提出的场景 - 因为我的服务器与用户交互毫无关系(我不能将用户重定向到某个登录对话框) - 无论用户是否使用其移动应用程序,服务器都在后台执行自己的操作。例如,在令牌过期时,我该怎么做?
此外,我希望用户能够直接在手机上进行Facebook操作,而无需服务器干预。
按照我的期望流程如下所示:
  1. 用户启动本机移动应用程序。
  2. 用户使用Facebook SDK在本机移动应用程序上进行身份验证。
  3. 用户收到特殊令牌,可以在服务器端转换为访问令牌
  4. 将令牌发送到服务器并在服务器上存储。
  5. 如果服务器需要访问用户的Facebook数据,它将使用此特殊令牌并将其转换为访问令牌。
  6. 当令牌过期时,服务器可以使用特殊令牌扩展它,而无需任何用户交互。
移动应用程序在身份验证后应该向服务器发送哪些数据?服务器如何使用这些数据随时访问用户的Facebook资源?
我正在使用C# Facebook SDK进行服务器端操作。但我认为这并不重要,我需要理解机制。

我之前也遇到了类似的问题,解决方法是将访问令牌发送到我的服务器,然后使用Facebook服务器端SDK对其进行操作。但是,该令牌有一个过期时间,不确定它在过期之前能够存活多久... - norman784
1个回答

5

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

当用户登录您的应用程序时,将向您的应用程序提供一个令牌以及该令牌的到期日期。您可以在令牌过期之前从客户端或服务器使用该令牌。但是,如果用户不再使用您的应用程序,您的服务器无法延长令牌的有效期。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接