2016-06-01 46 views
3

我想弄清楚在我的應用程序中存儲用戶的唯一ID的好方法。我使用用戶管理Facebook登錄和對用戶的類:Facebook Graph API - 用戶標識唯一?

function FacebookUser(userObj) { 
    if (userObj) { 
     this.name = userObj.name; 
     this.id = userObj.id; 
     this.picture = userObj.picture.data.url; 
     this.isLoggedIn = true; 
    } else { 
     this.name = 'Login'; 
     this.id = 0; 
     this.picture = ''; 
     this.isLoggedIn = false; 
    } 
} 

基本上,我有角一種服務,處理Facebook登錄:

.service('facebookService', function() { 

     this.getFacebookUser = function (callback) { 
      $.getScript("//connect.facebook.net/en_US/sdk.js", function() { 
       var appId = "12312312313123"; 
       FB.init({ 
        appId: appId, 
        status: true, 
        cookie: true, 
        xfbml: true, 
        version: 'v2.4' 
       }); 

       FB.getLoginStatus(function (response) { 
        if (response.status == 'connected') { 
         FB.api('/me?fields=picture,name,email', function (data) { 
          callback(new FacebookUser(data)); 
         }) 
        } else { 
         FB.login(function (response) { 
          FB.api('/me?fields=picture,name,email', function (data) { 
           callback(new FacebookUser(data)); 
          }) 
         }); 
        } 
       }) 
      }); 
     } 

    }) 

什麼我想找出唯一標識符是什麼。我想僅使用用戶的電子郵件地址,因爲它保證是唯一的,但不想要求額外的權限。最初,我想使用ID字段,但我不清楚ID是否會改變或不改變。在Facebook文檔中,他們解釋ID字段等:

此人的用戶帳戶的ID。此ID對每個應用程序 都是唯一的,不能跨不同的應用程序使用。我們的升級指南,提供有關 應用程序特定的標識

根據這一信息,該ID是唯一的應用程序,並不能在不同的應用中使用。不過,我試圖在這裏更清楚一點。如果一個用戶今天登錄到應用程序,然後在幾個月內再次登錄,他們的ID是否會相同(如果它是相同的應用程序)還是會更改?次要問題是,如果/當我進行更改並獲得新的應用程序ID,ID是否會相同或更改?它在技術上仍然是相同的應用程序,只是一個不同的版本。我的假設是,由於它是一個不同的應用程序ID,Facebook認爲它是一個完全不同的應用程序,但我是新來的Facebook API,並期待專家的建議。

回答

7

我不是專家,但我會盡量回答你的問題。

如果一個用戶今天登錄到應用程序,然後在幾個月內再次登錄,他們的ID是否會相同(如果它是相同的應用程序)還是會更改?

只要App ID相同,即使在登錄之間,用戶ID也不會改變,無論間隔多長時間。

第二個問題是,如果/當我進行更改並獲取新的應用程序ID,ID是相同還是更改?

新的應用程序ID意味着不同的應用程序,這意味着用戶ID會改變。但是,如果您獲得新的應用程序ID並需要訪問同一用戶,則可以使用Facebook的Business Mapping API。從Facebook文檔

摘錄:

如果您需要在多個應用程序或運行跨應用宣傳相同的用戶ID映射,我們增加了一個新的API調用業務映射API。這使您可以跨應用映射已登錄用戶的ID,只要這些應用都屬於同一業務。

+0

謝謝!我不知道Business Mapping API,但我認爲你完全回答了我的問題。 – mwilson

+0

我可以確認userId對於不同設備上的相同App ID是相同的。 –

+0

你的第一個答案拯救了我的一天。當我在記錄兩次後在數據庫中看到兩個不同的UID時,我嚇壞了。我爲我的Prod和Dev環境使用了2個不同的應用ID,並且認爲ID可能會隨時間而改變。但是因爲我在我的sdk初始化時設置了兩個不同的應用程序ID。你可能不是專家,但你肯定是釘了它! :) – Matias