Получение идентификатора пользователя Facebook с помощью Facebook SDK

#android #facebook #facebook-graph-api

#Android #Facebook #facebook-graph-api

Вопрос:

Я использую facebook login в своем приложении, и мне удалось получить необходимую информацию о вошедшем в систему пользователе (имя и фамилия, идентификатор. пол и т. Д.), Чтобы я мог открыть определенный профиль с этим идентификатором. поскольку я работаю с последней версией Facebook SDK, я не могу получить идентификатор пользователя.

Я заметил, что в этом SDK есть несколько изменений, но проблема в том, что единственное, чего мне сейчас не хватает, — это идентификатор пользователя. Я могу получить другую информацию, кроме идентификатора — она дает мне неправильный идентификатор (17 цифр).

Когда я проверяю его через браузер (используя graph вместо www) Я вижу, что идентификатор пользователя содержит только 10 цифр.

Вот код:

 private void onSessionStateChange(final Session session, SessionState state, Exception exception) {
    if (state.isOpened()) {
        Log.i(TAG, "Logged in...");
        @SuppressWarnings("deprecation")
        RequestAsyncTask request = Request.executeMeRequestAsync(session,  new Request.GraphUserCallback() {
            @Override
            public void onCompleted(GraphUser user, Response response) {
                   if (session == Session.getActiveSession()) {
                        if (user != null) {
                            user_ID = user.getId();//user id
                            profileName = user.getName();//user's profile name
                            token = session.getAccessToken();
                            .
                            .
                            .
                        }
                        else
                        {
                        .
                        .
                        }
                    }
            }
        }); 
    } else if (state.isClosed()) {
        Log.i(TAG, "Logged out...");
    }
}
 

Ответ №1:

Проблема заключается в обновлении facebook SDK до graph API версии 2.0. Facebook предоставляет уникальный идентификатор для пользователей, который меняется между приложениями, что означает, что данный идентификатор не является исходным идентификатором пользователя.

Ссылка на Facebook:

Изменения с версии v1.0 на версию v2.0

Идентификаторы пользователей в приложении: для лучшей защиты информации пользователей, когда люди заходят в версию вашего приложения, которая была обновлена для использования Graph API версии 2.0, Facebook теперь будет выдавать идентификатор в приложении, а не исходный идентификатор этого пользователя.

Мое решение использует браузер, а не приложение facebook. URL-адрес должен выглядеть следующим образом:

 http://www.facebook.com/GivenUserId
 

и код:

 startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.facebook.com/" userid)));