3

我試圖創建一個服務器端訪問到用戶的Facebook資源(圖片/相冊/等)Facebook的訪問令牌。 我想用戶將使用其本地移動應用程序認證一次,並且該服務器將能夠無需用戶交互訪問用戶的數據。爲服務器端

我想了解我需要採取的步驟才能使其工作。

我讀過Facebook的:Login for Server-side Apps但我不知道如何使用在那裏提出的方案 - 因爲我的服務器無關與用戶交互(我不能把用戶重定向到一些登錄對話框) - 無論用戶是否使用其移動應用程序,服務器都在後臺執行自己的操作。例如,我應該如何處理令牌過期?

更那麼,我想,用戶將能夠在移動本身進行直接的Facebook操作,無需服務器干預。

在我看來,這是我所期望的流量:

  1. 用戶推出原生移動應用程序。
  2. 用戶使用本地移動應用上的Facebook SDK進行身份驗證。
  3. 用戶收到特殊令牌,可以在服務器端將其轉換爲訪問令牌
  4. 令牌將被髮送到服務器並存儲在那裏。
  5. 如果服務器需要訪問用戶的Facebook數據,它將使用此特殊令牌並將其轉換爲訪問令牌。
  6. 當令牌過期時 - 服務器可以使用特殊令牌對其進行擴展,而無需任何用戶交互。

認證後應從移動應用程序發送什麼數據到服務器。服務器應該如何使用這些數據隨時訪問用戶的Facebook資源?

我使用C#的Facebook SDK服務器。但我認爲這並不重要,我需要了解機制。

+0

我有一個類似的問題並解決它發送的訪問令牌到我的服務器,然後與Facebook的服務器端-SDK我做我想做的事情,但是,令牌有到期,不知道究竟如何它會在到期之前過日子... – norman784

回答

5

如果用戶不繼續使用該應用程序,令牌到期。這是設計 - 如果用戶停止使用應用程序,則應用程序不應該繼續訪問用戶的帳戶。

當用戶登錄到您的應用程序中時,將爲您的應用程序提供一個令牌以及該令牌的到期日期。您可以從客戶端或服務器使用該令牌,直到它到期。但是,如果用戶不繼續使用應用程序,則服務器無法擴展令牌。

如果用戶繼續使用您的應用程序,您將有機會更新您的服務器令牌。例如,在Android和iOS SDK中,如果用戶使用您的應用程序發出Facebook請求,則令牌會自動刷新。那時,您可以將刷新的令牌傳輸到您的服務器。