Передача токена доступа facebook 3 для Android

В своем приложении я использую новый facebook SDK (3). Из основного действия пользователь может нажимать разные кнопки, после нажатия запускается новое действие, которое отображает разные списки: один с сообщениями, второй с запросами на добавление в друзья и третий с уведомлениями. Все работает нормально с первыми двумя случаями, но когда я хочу показать уведомления, сделав запрос графического пути, например:

Request.executeGraphPathRequestAsync(session, "me/notifications?include_read=true",
                new Request.Callback() {}

Я получаю сообщение об ошибке:

{Response: responseCode: 400, graphObject: null, error: {HttpStatus: 400, errorCode: 2500, errorType: OAuthException, errorMessage: Для запроса информации о текущем пользователе должен использоваться активный токен доступа. }, isFromCache: false}

Я уже просил разрешения на чтение (read_mailbox, read_requests) и разрешение на публикацию (manage_notifications). Я думаю, что мне нужно передать токен доступа к моей активности со списком уведомлений, но я не знаю, как это сделать, спасибо за помощь

Решение

Я нашел решение, просто мы не можем помещать такие параметры, как «include_read = true», непосредственно в запрос графического пути, мы должны создать новый объект запроса с такими параметрами: сеанс, httpmethod, параметры, графовый путь, обратный вызов.


person Janek    schedule 25.04.2013    source источник
comment
Ваша оценка верна - вам необходимо предоставить токен доступа. Что ты пробовал?   -  person Madbreaks    schedule 26.04.2013
comment
ничего, я не знаю, как сохранить токен доступа в одном действии, а затем открыть его в другом   -  person Janek    schedule 26.04.2013
comment
Чтобы быть более конкретным, я знаю, что существует класс AccessToken с методом getToken (), однако я не знаю, как его использовать (создать). Тогда я предполагаю, что мне нужно сохранить токен доступа, который я получил, я открываю его во втором действии с помощью этого метода Session.openActiveSessionWithAccessToken (context, accessToken, callback)   -  person Janek    schedule 26.04.2013
comment
Вам больше не нужно напрямую иметь дело с токенами доступа в SDK v3. Просто пройдите сеанс, и он должен работать. Поскольку Session.getActiveSession () является статическим, вы можете получить к нему доступ из любого действия.   -  person Ming Li    schedule 26.04.2013
comment
но он не работает, когда я использую Session.getActiveSession Я не могу читать уведомления (отлично работает с read_mailbox, read_requests), я получаю сообщение об ошибке: необходимо использовать активный токен доступа для запроса информации о текущем пользователе   -  person Janek    schedule 26.04.2013


Ответы (1)


Спасибо, Янек, за ответ на ваш собственный вопрос, поскольку вы упомянули, что параметры необходимо отправлять отдельно, а не как часть graphPath, я просто публикую пример вашего решения на случай, если у кого-то возникнет такая же проблема:

new Request(session, "me", getRequestParameters(), null, new Request.Callback() { ... }).executeAsync();

   private Bundle getRequestParameters() {
      Bundle parameters = new Bundle(1);
         parameters.putString("fields", "id,name,first_name,last_name,gender,picture");
         return parameters;
   }
person sam    schedule 29.07.2013
comment
Я использую этот метод. Он устраняет ошибку из-за токена, но при попытке доступа к списку друзей я получаю пустой массив данных. - person Bhargav Jhaveri; 06.11.2014