2013-06-09 5 views
8

Im пытается перейти на Facebook SDK 3.0 и, наконец, получил все, чтобы работать с Request.newStatusUpdateRequest(). Однако мое приложение разделяет/публикует текст вместе со ссылкой. Я попытался/заглянула в следующее:Поделиться ссылкой и текстом с Android Facebook SDK 3.0

Request.newStatusUpdateRequest() 

Это, кажется, не имеют каких-либо опций для пакета или любым другим способом, чтобы включить ссылку и значок.

Request.newRestRequest() 

Пропущено это, потому что я видел, что REST был обесценен.

new WebDialog.FeedDialogBuilder(_activity, session, params).build().show(); 

Это на самом деле работает довольно хорошо, но в результате пост-видимому, не будет связано с моей Facebook App, и я не знаю, как это повлияет на мои идеи Facebook.

Request.newPostRequest() 

Из того, что я прочитал, этот метод кажется правильным. Тем не менее, я не могу понять, где можно передать GraphObject в качестве одного из параметров.

Что такое способ PROPPER опубликовать/поделиться текстом, ссылкой и изображением на стене пользователя? Кажется, это Request.newPostRequest(), поэтому я буду включать код, который у меня есть для этого.

Request request = Request.newPostRequest(session, "me/feed", ??graph_object??, new Request.Callback() { 
    @Override 
    public void onCompleted(Response response) { 
     showPublishResult("message", response.getGraphObject(), response.getError()); 
    } 
}); 
request.setParameters(params); 
Request.executeBatchAsync(request); 

Но что же представляет собой объект GraphObject? Где я могу получить graph_object? Чем больше я читаю из FB в GraphObject/OpenGraph/Graph API, тем больше меня путают.

Если я полностью направляюсь в неправильном направлении, пожалуйста, скажите мне. Если Request.newPostRequest является способом propper этого, пожалуйста, дайте мне дополнительную информацию о параметре GraphObject.

ответ

15

Наконец удалось получить все, что нужно с Facebook SDK 3.0 с помощью следующих действий:

Bundle params = new Bundle(); 
params.putString("caption", "caption"); 
params.putString("message", "message"); 
params.putString("link", "link_url"); 
params.putString("picture", "picture_url"); 

Request request = new Request(Session.getActiveSession(), "me/feed", params, HttpMethod.POST); 
request.setCallback(new Request.Callback() { 
    @Override 
    public void onCompleted(Response response) { 
     if (response.getError() == null) { 
      // Tell the user success! 
     } 
    } 
}); 
request.executeAsync(); 
+0

У меня есть один и тот же вопрос. Использование запроса «ванили» в отличие от использования newPostRequest (.. openGraphObject ..) кажется мне слишком грубым, но чем больше я смотрю, тем больше я делаю вывод, что большинство людей просто делают то, что вы написали выше. – JRun

+0

дает ошибку компиляции: Запрос конструктора (Session, String, Bundle, HttpMethod) не определен – kgandroid

+0

Нельзя получить доступ к классу Request. Теперь они отправили его в частный пакет. – rafid059

4

я сделал с помощью этого метода. Посмотрите, поможет ли это или нет.

public static void publishFeedDialog(final Activity current, final String title, 
     final String caption, final String description, final String link, 
     final String pictureUrl) { 
    // start Facebook Login 
    Session.openActiveSession(current, true, new Session.StatusCallback() { 

     // callback when session changes state 
     @Override 
     public void call(Session session, SessionState state, 
       Exception exception) { 
      if (session.isOpened()) { 
       Bundle params = new Bundle(); 
       params.putString("name", title); 
       params.putString("caption", caption); 
       params.putString("description", description); 
       params.putString("link", link); 
       params.putString("picture", pictureUrl); 

       WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(
         current, Session.getActiveSession(), params)) 
         .setOnCompleteListener(new OnCompleteListener() { 

          @Override 
          public void onComplete(Bundle values, 
            FacebookException error) { 
           if (error == null) { 
            // When the story is posted, echo the 
            // success 
            // and the post Id. 
            final String postId = values 
              .getString("post_id"); 
            if (postId != null) { 
             ToastHelper.MakeShortText("Posted"); 
            } else { 
             // User clicked the Cancel button 
             ToastHelper 
               .MakeShortText("Publish cancelled"); 
            } 
           } else if (error instanceof FacebookOperationCanceledException) { 
            // User clicked the "x" button 
            ToastHelper 
              .MakeShortText("Publish cancelled"); 
           } else { 
            // Generic, ex: network error 
            ToastHelper 
              .MakeShortText("Error posting story"); 
           } 
          } 

         }).build(); 
       feedDialog.show(); 
      } 
     } 
    }); 
1

Чтобы разделить страницу или ссылку

Bundle params = new Bundle(); 
params.putString("link", "link_url"); 


Request request = new Request(Session.getActiveSession(), "me/feed", params, HttpMethod.POST); 
request.setCallback(new Request.Callback() { 
    @Override 
    public void onCompleted(Response response) { 
     if (response.getError() == null) { 
      // Tell the user success! 
     } 
    } 
}); 
request.executeAsync(); 

Более разместить параметры см me/feed on developer.facebook.com

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