0

我有手機在線遊戲,我的服務器需要玩家的user_id。但Facebook只給我access_token來請求來自用戶帳戶的數據,並且不提供簽名的user_id。有SIGNED user_id是很重要的,所以其他用戶可以假裝只是通過替換請求中的user_id到我的服務器。在客戶端簽名是不安全的,因爲任何關心的人都可以在客戶端二進制文件中找到祕密密鑰。從手機應用程序驗證用戶

所以現在我將不得不在身份驗證過程中創建中間步驟 - 請求我的服務器與access_token,這反過來要求Facebook的用戶信息(這是sloooow並取決於我的服務器geoposition(常量),而不是客戶端),使用MY_SERVER_PRIVATE_KEY + user_id創建簽名,並將其發送回客戶端。這不是一個大問題,但是會在認證過程中產生延遲。

我想念什麼?有沒有辦法接收用我的應用程序密鑰簽名的facebook的user_id?

+0

請註明您所使用的服務器端技術,也究竟你的應用程序的最終功能,我剛纔發佈的常規信息在這裏的Facebook API的行爲, –

回答

0

你不能得到簽名的用戶ID,除非用戶先連接到你的應用程序。所以你必須在你的應用中使用客戶端或服務器端的Auth流。

Application Auth Flow documentation at Facebook

+0

謝謝。正如我預料的那樣。 只是爲了澄清我的應用程序結構: 我有服務器正在請求籤名user_id 我有不安全的公共客戶端。 我需要的是防止惡意用戶嘗試以另一個用戶身份進行身份驗證。如果我在客戶端上籤了user_id,它幾乎沒有任何保護措施 - 任何有技能的人都可以反彙編並找到密鑰(編譯時加密,但仍然不安全)。 某些社交網絡爲其畫布aps提供簽名user_id,那是什麼讓我質疑 - 我認爲它必須是常見的需要功能,我只是在文檔中錯過了它。 – RawCode