API Facebook: как получить уникальный идентификатор пользователя для входа в FB? Идентификатор из API не соответствует «настоящему» идентификатору пользователя в версии 2.0

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user 
{
    self.profilePictureView.profileID = user.objectID;
    self.nameLabel.text = user.name;
    NSLog(@"My ID:%@", user.objectID);
}

Я попытался напечатать идентификатор пользователя, используя приведенный выше код. И что я получаю, это 3176144783XXXXX.

Однако я получил другой с помощью этого онлайн-инструмента http://findmyfacebookid.com/. Результат 1000042591XXXXX.

Кто-нибудь знает разницу? Почему мое приложение и findmyfacebookid.com получают разные идентификаторы пользователя для одного и того же пользователя?

Примечание. Мое мобильное приложение должно использовать уникальный идентификатор FB для создания собственной базы данных пользователей. Вот почему мне нужен уникальный идентификатор.


person Zidong    schedule 16.05.2014    source источник
comment
Вы можете использовать (applicationId + userId). Пожалуйста, посмотрите здесь!   -  person Tuan Nguyen    schedule 28.10.2017


Ответы (1)


Начиная с версии 2.0 API Facebook, идентификаторы пользователей, возвращаемые вашему приложению, привязаны к вашему приложению (т. е. каждое приложение получает другой идентификатор для любого данного пользователя) — вы не можете сравнить то, что этот сайт говорит вам, с тем, что получило ваше приложение. когда вы вызвали user.objectID, потому что это намеренно разные строки

Используйте идентификатор, возвращенный вашему приложению, в качестве идентификатора для пользователей в вашем приложении — нет необходимости пытаться найти «настоящий» или «старый» идентификатор пользователя — вам не нужно использовать идентификатор пользователя, предоставленный любому другому идентификатор приложения

Подробнее об изменениях с версии 1.0 на версию 2.0 можно узнать здесь: https://developers.facebook.com/docs/apps/upgrading

Здесь конкретно обсуждаются идентификаторы приложений, в том числе способ для разработчиков нескольких приложений сопоставить идентификаторы пользователей, использующих более одного приложения: https://developers.facebook.com/docs/apps/upgrading#upgrading_v2_0_user_ids

person Igy    schedule 16.05.2014
comment
Это никогда не изменится, если пользователь войдет/выйдет из системы/изменит пароль, изменит информацию о пользователе, ....? - person Shinichi; 08.06.2016
comment
Идентификатор для пары <user, app> — для его создания не используется информация о сеансе (в отличие от токенов доступа). - person Igy; 09.06.2016
comment
Что, если я хочу использовать пользователей, зарегистрированных в моем другом приложении, в этом приложении, чтобы им не нужно было регистрироваться дважды? Я пытаюсь реализовать свой собственный вход в систему с помощью «MyAPP», и мне это действительно нужно. - person Muhammad Qasim; 18.08.2016
comment
Вам нужно будет использовать что-то вроде Business Mapping API, чтобы соотнести пользователя в одном из ваших приложений в свой профиль из другого вашего приложения, но пользователю нужно будет входить в каждое приложение отдельно - person Igy; 19.08.2016
comment
Привет @Igy, у меня есть приложение fb из старых времен, у меня есть реальный идентификатор пользователя, и я хочу преобразовать его в идентификатор пользователя в области приложения, как только пользователь войдет в систему, как упоминалось выше здесь. Есть ли способ добиться этого? Tnx - person asdf_enel_hak; 17.10.2018
comment
Почему вы хотите изменить идентификатор? Ваше приложение должно по-прежнему иметь возможность использовать старый, «настоящий» идентификатор. - person Igy; 17.10.2018
comment
@Igy Когда пользователь аутентифицируется, я должен сопоставить их. На данный момент я не могу понять, как это сделать? - person asdf_enel_hak; 17.10.2018
comment
С чем вы пытаетесь их сопоставить? Один и тот же идентификатор приложения должен всегда получать один и тот же идентификатор пользователя для данного пользователя при входе в систему. Если вы пытаетесь сопоставить идентификатор, полученный вашим приложением, с идентификатором, который вы собрали в другом месте, это не должно быть возможно, это вся причина существуют идентификаторы на уровне приложения - person Igy; 21.10.2018