2013-06-09 24 views
8

Próbuję przeprowadzić aktualizację do pakietu SDK 3.0 serwisu Facebook i ostatecznie otrzymałem wszystko, aby współpracować z funkcją Request.newStatusUpdateRequest(). Jednak moja aplikacja udostępnia i publikuje tekst wraz z linkiem. Próbowałem/spojrzał na następujące:Udostępnij link i tekst za pomocą Androida Facebook SDK 3.0

Request.newStatusUpdateRequest() 

nie wydają się mieć żadnych opcji dla zespołu lub jakikolwiek inny sposób, aby podać link i ikonę.

Request.newRestRequest() 

Pominięto to, ponieważ widziałem, że REST był amortyzowany.

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

To faktycznie działa całkiem dobrze, ale uzyskany post nie wydają się być związane z moim Facebooku aplikację i nie jestem pewien, jak to będzie efekt moich spostrzeżeń Facebook.

Request.newPostRequest() 

Z tego, co przeczytałem, metoda ta wydaje się właściwa. Jednak nie mogę dowiedzieć się, gdzie można przekazać GraphObject jako jeden z parametrów.

Jaki jest PROPPER sposób publikowania/udostępniania tekstu, linku i obrazu na ścianie użytkownika? Wydaje się, że jest Request.newPostRequest(), więc dołączę kod, który mam do tego.

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); 

Czym tak naprawdę jest GraphObject? Skąd mam obiekt graph_object? Im więcej czytam z FB na GraphObject/OpenGraph/Graph API tym bardziej się mylę.

Jeśli zmierzam w niewłaściwym kierunku, proszę powiedz mi. Jeśli Request.newPostRequest jest sposobem na zrobienie tego, proszę podać mi więcej informacji na temat parametru GraphObject.

Odpowiedz

15

Wreszcie udało się wszystko, co potrzebne z Facebooka SDK 3.0 za pomocą następujących czynności:

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

Mam to samo pytanie. Używanie "waniliowej" prośby w przeciwieństwie do używania nowegoPostRequest (.. openGraphObject ..) wydaje mi się również trochę brutalną siłą, ale im więcej patrzę, tym bardziej dochodzę do wniosku, że większość ludzi robi to, co napisałeś powyżej. – JRun

+0

podaje błąd kompilacji: Żądanie konstruktora (Session, String, Bundle, HttpMethod) jest niezdefiniowane – kgandroid

+0

Nie można uzyskać dostępu do klasy Request. Teraz umieścili go w prywatnym pakiecie. – rafid059

4

zrobiłem przy użyciu tej metody. Sprawdź, czy to może pomóc, czy nie.

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

Aby udostępnić stronę lub link

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(); 

Dokładne parametry Post Zobacz me/feed on developer.facebook.com

Powiązane problemy