14

在Facebook應用程序設置中☞高級☞身份驗證我可以選擇「Web」或「Native/Desktop」作爲應用程序類型。信息提示中說:Facebook應用程序類型:哪一個選擇移動和網絡?

只能選擇本機/桌面,如果你是一個原生的iOS或Android應用, 設備或桌面應用

其實我沒有這些,但我的應用程序是一個本地iOS應用以及Facebook頁面標籤。
問題:應該選擇哪種應用類型?


我做了一些研究,發現在Facebook Android Tutorial(下故障排除)以下:

  • 應用程序類型的Web VS本地/桌面。有關係嗎?:不,它不是 的問題。不過,建議您使用'Native/Desktop'類型作爲您的應用的 。

是什麼意思不要緊?這對我沒有意義。爲什麼我應該有一個選擇呢?

我做了SO一些調查研究,並通過@Igy發現this statement(在Facebook的開發支持工程師):

如果應用程序的類型設置爲「本地/桌面」這是假設你 分佈式應用程序的祕密因此應用程序 訪問令牌不受信任(並且PHP SDK中的'getAccessToken'將僅在真實用戶登錄時起作用,它不能回退到應用程序令牌)

最後我發現這在Facebook documentation

注意:被配置爲本地/桌面應用程序的應用程序將不會 能夠使需要的應用程序access_token API調用。

我確實需要在我的頁面選項卡應用程序中進行需要訪問令牌的API調用,因此我的結論是選擇「Web」作爲應用程序類型,儘管我有一個使用相同的本機iOS應用程序應用程序ID作爲頁面標籤應用程序。但是這會對iOS應用程序有什麼缺點嗎?

回答

15

TL; DR:使用「網絡」,除非你把應用程序的祕密插入iOS/Android的二進制

的主要區別(也即它說「沒關係」的原因,同時提出建議)是,如果選擇「本地/桌面」模式,則假定您分發嵌入了應用程序祕密的應用程序二進制文件,並將應用程序祕密視爲不可信。

在這種配置中,使用應用祕密(例如,創建測試用戶,代表應用程序本身進行API調用,例如更改應用程序設置,發佈成就等)將不起作用。

如果您的應用程序不需要使用應用程序密鑰/應用程序訪問令牌,將其設置爲本地/桌面可提高安全性,因爲您的應用程序只需要少一個攻擊媒介。

如果您使用您的代碼發佈應用程序祕密,您必須使用該選項,否則用戶可以輕鬆確定應用程序祕密並劫持應用程序本身。

相關問題