# HG changeset patch # User Jaroslav Tulach # Date 1289343160 -3600 # Node ID 93c350696ff618055f1ff5db5ce4f09a83900228 # Parent 258dc96b16364e58a6ce63fb3983a6881f5e0e27 Using preferences to remember previous session login diff -r 258dc96b1636 -r 93c350696ff6 src/main/java/cz/xelfi/feedbook/Main.java --- a/src/main/java/cz/xelfi/feedbook/Main.java Tue Nov 09 21:01:16 2010 +0100 +++ b/src/main/java/cz/xelfi/feedbook/Main.java Tue Nov 09 23:52:40 2010 +0100 @@ -1,40 +1,66 @@ package cz.xelfi.feedbook; +import com.google.code.facebookapi.FacebookException; import com.google.code.facebookapi.FacebookJaxbRestClient; import com.google.code.facebookapi.Permission; import com.google.code.facebookapi.schema.FriendsGetResponse; import com.google.code.facebookapi.schema.User; import com.google.code.facebookapi.schema.UsersGetInfoResponse; +import com.sun.syndication.feed.rss.Channel; +import com.sun.syndication.feed.rss.Item; +import com.sun.syndication.io.WireFeedInput; +import java.io.IOException; import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; import java.util.Collections; import java.util.List; +import java.util.prefs.Preferences; +import org.xml.sax.InputSource; public class Main { private static final String APP_KEY = "ecdbd5dbacc168f9edfe470ccd7e401b"; private static final String APP_SEC = "22e3165366e958a6e049e1e0c1d30105"; - public static void main( String[] args) throws Exception { + + private static String login() throws IOException, FacebookException, URISyntaxException { FacebookJaxbRestClient login = new FacebookJaxbRestClient(APP_KEY, APP_SEC); final String token = login.auth_createToken(); URI u = new URI("http://www.facebook.com/login.php?api_key=" + APP_KEY + "&auth_token=" + token); + System.out.println("authentication: " + u); Runtime.getRuntime().exec("xdg-open " + u); - /* - InputStream is = u.toURL().openStream(); - for (;;) { - int ch = is.read(); - if (ch == -1) { - break; - } - System.out.write(ch); - } - */ //Desktop.getDesktop().browse(u); System.out.println("Visit the browser and press enter..."); System.in.read(); - final String session = login.auth_getSession(token, true); + return login.auth_getSession(token, true); + } + + public static void main( String[] args) throws Exception { + WireFeedInput rssInput = new WireFeedInput(); + URL rssUrl = new URL("http://blogs.apidesign.org/rss/"); + Channel rss = (Channel)rssInput.build(new InputSource(rssUrl.openStream()));; + System.err.printf("stream from %s\n", rss.getUri()); + for (Object o : rss.getItems()) { + Item item = (Item)o; + + System.err.printf("link: %s date: %s title: %s\n", item.getLink(), item.getPubDate(), item.getTitle()); + } - FacebookJaxbRestClient fb = new FacebookJaxbRestClient(APP_KEY, APP_SEC, session); + Preferences prefs = Preferences.userNodeForPackage(Main.class); + + FacebookJaxbRestClient fb; + for (;;) { + final String stored = prefs.get("session", null); + if (stored != null) { + fb = new FacebookJaxbRestClient(APP_KEY, APP_SEC, stored); + break; + } + final String session = login(); + fb = new FacebookJaxbRestClient(APP_KEY, APP_SEC, session); + prefs.put("session", session); + break; + } Long user = fb.users_getLoggedInUser(); final FriendsGetResponse ret = fb.friends_get(user); final UsersGetInfoResponse info = fb.users_getInfo(ret.getUid(), Collections.singleton("last_name")); @@ -48,7 +74,7 @@ String cmd = "Testing new application"; if (fb.users_hasAppPermission(Permission.SHARE_ITEM)) { - Long ok = fb.links_post(user, url, cmd); + Long ok = 1L; //fb.links_post(user, url, cmd); System.out.println("posted as " + ok); } else { System.out.println("No permission to share links");