2013-09-10 4 views
0

Я пытаюсь иметь дело с Facebook SDK на Android. На данный момент публикация в фиде пользователя (me/feed) выполняется и работает правильно. После аутентификации пользователя мое приложение получает разрешение manage_pages и предлагает пользователю сохранять группы, для которых у него есть права администратора.Facebook SDK для Android - отправить на ленту новостей

private void requestPermissions() { 
    List<String> permissions = session.getPermissions(); 
    final List<String> PERMISSIONS = Arrays.asList("publish_actions", 
      "manage_pages"); 
    if (!isSubsetOf(PERMISSIONS, permissions)) { 
     Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(
       myActivity, PERMISSIONS); 
     session.requestNewPublishPermissions(newPermissionsRequest); 
    } 
}; 

Позже пользователь может выбрать группу для публикации. После этого, приложение делает запрос, чтобы получить доступ к странице маркер и начинает размещение:

private void postToGroup() { 
    if (session != null) { 
     Log.d("FB", "groupToken request!"); 
     Request myreq = Request.newGraphPathRequest(session, "me/accounts", 
       new Request.Callback() { 

        @Override 
        public void onCompleted(Response response) { 
         Log.d("FB", "received token"); 
         GraphObject obj = response.getGraphObject(); 
         JSONObject json = obj.getInnerJSONObject(); 
         try { 
          String token = null; 
          JSONArray data = json.getJSONArray("data"); 
          Log.d("FB", frag.getAcc().getLogin()); 
          for (int i = 0; i < data.length(); i++) { 
           JSONObject acc = (JSONObject) data.get(i); 
           Log.d("FB", acc.getString("id")); 
           if (acc.getString("id").equals(
             frag.getAcc().getLogin())) { 
            Log.d("FB", 
              "token finded! " 
                + acc.getString("access_token")); 
            token = acc.getString("access_token"); 
           } 
          } 
          Log.d("FB", token); 
          executeRequest(token); 
         } catch (JSONException e) { 
          e.printStackTrace(); 

         } 

        } 

       }); 
     myreq.executeAsync(); 
    } else { 
     Log.d("FB", "Session is closed"); 
    } 
} 

Вот ExecuteRequest метод:

private void executeRequest(String token) { 

     postParams = new Bundle(); 
     postParams.putString("name", postTitle); 
     postParams.putString("message", frag.getContent()); 
     postParams.putString("access_token", token); 
     request = new Request(session, frag.getAcc() 
       .getLogin() + "/feed", postParams, HttpMethod.POST, 
       callback); 

    Log.d("FB", "Executing post request"); 
    request.executeAsync(); 
} 

И обратного вызова для этого:

private Request.Callback callback = new Request.Callback() { 
    public void onCompleted(Response response) { 
     Log.d("FB", "get response!"); 
     FacebookRequestError error = response.getError(); 
     if (error == null) { 
      JSONObject graphResponse = response.getGraphObject() 
        .getInnerJSONObject(); 
      String postId = null; 
      try { 
       postId = graphResponse.getString("id"); 
       Log.d("FB", postId); 
      } catch (JSONException e) { 
       Log.d("FB error", "JSON error " + e.getMessage()); 
      } 

     } else { 
      Log.d("FB error", error.getErrorMessage()); //HERE I'M RECEIVING AN ERROR 
     } 
    } 

}; 

И после того, как после попытки я 'm receive error "Пользователь не разрешил приложению выполнить это действие". Пожалуйста, помогите мне справиться с правильным запросом в этом случае. Или, может быть, я должен попытаться сделать необработанный запрос на скручивание графика? Я расчесываю свою голову примерно на две недели, но единственная информация, которую я нашел, - «вы должны использовать токен доступа к странице». Но как правильно использовать его? Спасибо.

ответ

0

Извините за это. Как всегда, ответ будет finded на самом деле после размещения здесь ... я сделал трюк с помощью добавления разрешений «status_update» к моей сессии, как сказано здесь:

why does posting to facebook page yield "user hasn't authorized the application"

Однако, я не сделал найти любую информацию об этом. Кроме того, сообщение в фиде пользователя было успешным без этого разрешения. Надеюсь, это поможет кому-то!

Смежные вопросы