2016-09-30 119 views
0

我正在寫一個Facebook應用程序,我想讓我的應用程序用戶再次確認沒有其他人會知道他們已經安裝了該應用程序。我甚至不希望使用該應用的用戶的Facebook朋友知道他/她使用它。我基本上想要誰使用應用程序是完全私人的。 (顯然,我會知道他們使用它,而Facebook會,你知道我的意思)Facebook用戶可以確定哪些朋友安裝了應用程序嗎?

有人可以驗證用戶將無法知道還有誰安裝了應用程序,即使他們開始寫FB Graph查詢還是一些這樣的事情?我是否必須小心配置我的應用程序以確保這一點?

回答

1

您的應用程序將只能看到該用戶的朋友,如果兩個用戶和朋友已授予您的應用程序user_friends許可。

現在,用戶當然可以爲您的應用創建訪問令牌,並在其中包含user_friends權限。儘管他們不會做得太好,因爲他們仍然不會看到任何朋友,因爲朋友們沒有給他們同樣的許可。

所以你應該是o.k.在這方面。這需要用戶積極參與其他朋友,才能將其視爲您應用的用戶。

請查看關於登錄安全性和保護API請求的文檔章節,其中包含其他建議,例如需要針對服務器端API調用的應用程序祕密證明。

+0

我需要用戶授予我(應用程序)user_friends特權,因爲我想知道我的應用程序的兩個用戶是否是朋友。 (我只是想阻止每個人知道他的朋友也是一個用戶,但我會知道的)。我相信你指出,不需要應用程序的祕密,用戶可以獲得訪問令牌(就像我可以)並查詢/我/ user_friends。所以我需要一個應用程序的祕密。但是一旦我做到了,我應該很好。那對嗎? –

+0

不,不是。應用程序祕密證明僅適用於服務器端API調用 - 因此用戶可能會使用其他方式(例如JS SDK)發出API請求,並且仍然可以看到他們的朋友是應用程序的用戶。我認爲你必須在這裏做出決定,更重要的是 - 你的應用可以看到用戶朋友,或者用戶不能這樣做。兩者同時很可能不是真正「安全」的方式。 – CBroe

+0

我還沒有測試過它,但我會認爲,如果您將應用程序配置爲需要應用程序密鑰證明,則用戶可以'爲我的應用程序獲取訪問令牌(除非我分享應用程序的祕密)。是對的嗎?我認爲這會帶來一個小問題 - 所有API調用都必須是應用程序的服務器端。但我認爲這不是一個殺手。或者我甚至可能有兩個應用ID,一個是需要應用密碼的證明,另一個是不需要的。感謝您的深思熟慮的評論,順便說一句。 –

-1

是的,你可以得到在線朋友列表,這意味着所有使用Graph請求安裝這個應用程序的朋友。

 if(FBSDKAccessToken.currentAccessToken().hasGranted("user_friends")){ 
     let request : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "/me/friends", parameters: nil,HTTPMethod: "GET") 
     request.startWithCompletionHandler({ (connection, result, error) -> Void in 
      if((error == nil)){ 
      print(result) 

      }else{ 
       print(error) 
      } 

     }) 
    }else{ 
     print("Publish action permission not granted") 
    } 
相關問題