2016-06-01 4 views
3

Я пытаюсь найти хороший способ хранения уникального идентификатора для пользователя в моем приложении. Я использую 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, но неясно, будет ли идентификатор когда-либо изменяться или нет. В документации на facebook они объясняют поле id как таковое:

Идентификатор пользователя этого пользователя. Этот идентификатор уникален для каждого приложения и не может использоваться в разных приложениях. Наше руководство по обновлению предоставляет больше информации о приложении конкретных идентификаторов

В соответствии с этим, ID является уникальным для приложения и не может быть использован в различных приложениях. Тем не менее, я пытаюсь получить немного больше ясности здесь. Если один пользователь входит в приложение сегодня, а затем снова через пару месяцев, будет ли их идентификатор одинаковым (если это одно и то же приложение) или он изменится? Вторичным вопросом было бы, что если/когда я сделаю изменения и получаю новый идентификатор приложения, будет ли ID идентичным или изменяться? Это технически еще одно приложение, просто другая версия. Мое предположение заключается в том, что, поскольку это другое приложение, facebook считает, что это совершенно другое приложение, но я новичок в facebook api и смотрю на экспертов за советом.

ответ

7

Я не эксперт, но я постараюсь ответить на ваши вопросы.

Если один пользователь регистрируется в приложении сегодня, а затем снова через пару месяцев, будет ли их идентификатор одинаковым (если это одно и то же приложение) или он изменится?

До тех пор, пока идентификатор приложения не будет идентичным, идентификатор пользователя не изменится, даже между входами, независимо от того, сколько времени между ними.

Вторичный вопрос будет заключаться в том, что если/когда я вношу изменения и получаю новый идентификатор приложения, будет ли ID идентичным или изменить?

Новый идентификатор приложения означает другое приложение, что означает, что идентификатор пользователя изменится. Но если вы получаете новый идентификатор приложения и должны иметь доступ к тому же пользователю, вы можете использовать facebook's Business Mapping API.

Отрывок из facebook документов:

Если вам необходимо отобразить те же идентификаторы пользователей на нескольких приложений или запустить кросс-приложения поощрений, мы добавили новый API под названием Business Mapping API. Это позволяет сопоставлять идентификаторы зарегистрированных пользователей в приложениях, если все эти приложения принадлежат одному бизнесу.

+0

Thanks! Я не знал о API бизнес-сопоставления, но, думаю, вы полностью ответили на мой вопрос. – mwilson

+0

Я могу подтвердить, что userId одинаково для одного и того же идентификатора приложения на разных устройствах. –

+0

Ваш первый ответ спас мой день. Я волновался, когда увидел два разных UID в моей БД после регистрации дважды.Я использовал 2 разных идентификатора приложения для моей среды Prod и Dev и думал, что Id может измениться во времени. Но было то, что я создал 2 разных идентификатора приложения в моей инициализации sdk. Возможно, вы не специалист, но вы, конечно же, пригвоздили его! :) – Matias