рдЬрд╛рд╡рд╛ рдореЗрдВ рдлреЗрд╕рдмреБрдХ рдЧреНрд░рд╛рдл рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╢реБрдн рджреЛрдкрд╣рд░, рд╣рдмреНрд░реЛрдЬрд╝рд┐рддреЗрд▓реА!

рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдЕрдкрдиреА рдЦреБрдж рдХреА рдмрд╛рдЗрдХ рдХреА рдХрд╣рд╛рдиреА рдмрддрд╛рдКрдВрдЧрд╛ред
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рдлреЗрд╕рдмреБрдХ рдЧреНрд░рд╛рдл рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдореБрдЭреЗ 3 рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рдереА: рд▓реЙрдЧрд┐рди, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рджреАрд╡рд╛рд░ рдкрд░ рд╕рдВрджреЗрд╢ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ред
рдореБрдЭреЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рдорд┐рд▓рд╛ (рдпрд╛ рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдЦреЛрдЬрд╛ рдЧрдпрд╛), рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЕрдкрдиреА рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдЧреНрд░рд╛рдлрд╝ рдПрдкреАрдЖрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЙрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХрд░ рджреА, рдЬреЛ рдЗрд╕ рдПрдкреАрдЖрдИ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рдореЗрд░реА рдорджрдж рдХрд░реЗрдВрдЧреЗ,
Google рдХреЛ рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдкреАрдбрд╝рд╛ рдкрд╣реБрдВрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдУрдкрди-рд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА HtmlUnit рдорд┐рд▓реА ред

рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдЦрд╛рддреЗ рдореЗрдВ рдлреЗрд╕рдмреБрдХ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:

1) рд╣рдореЗрдВ рдлреЗрд╕рдмреБрдХ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдИрдбреА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рд▓реЙрдЧрд┐рди рдФрд░ рдПрдХ рдПрдХреНрд╕реЗрд╕рдЯреЙрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред
2) рдлреЙрд░реНрдо рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП HtmlUnitред

рдлреЗрд╕рдмреБрдХ рдкрд░ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛


рд╣рдо рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ " рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ " рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
" рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рджрд░реНрд╢рди рдирд╛рдо " рдлрд╝реАрд▓реНрдб рднрд░реЗрдВ, " рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЧреЛрдкрдиреАрдпрддрд╛ рдиреАрддрд┐ " рд╕реЗ рд╕рд╣рдордд рд╣реЛрдВ рдФрд░ " рдЬрд╛рд░реА рд░рдЦреЗрдВ " рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рдореЗрдВ, " рдкрд░рд┐рд╡рд░реНрддрди рд╕рд╣реЗрдЬреЗрдВ " рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдРрдк рдЖрдИрдбреА рдХреЛ рд╕рд╣реЗрдЬреЗрдВред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦреЗрдВред


public class Facebook { /* App ID */ private static final String API_KEY = "1"; /*   ,      . */ private static final String REDIRECT_URL = "https://www.facebook.com/connect/login_success.html"; /* ID  . */ private static final String LOGIN_FORM_ID = "login_form"; /*  e-mail . */ private static final String INPUT_EMAIL_NAME = "email"; /*  password . */ private static final String INPUT_PASSWORD_NAME = "pass"; /*   "". */ private static final String INPUT_LOGIN_NAME = "login"; /*     . */ private static final String ACCESS_FORM_ID = "uiserver_form"; /*   "". */ private static final String INPUT_ALLOW_NAME = "grant_clicked"; /*   Graph API. */ private static final String GRAPH_URL = "https://graph.facebook.com/"; /* HtmlUnit -. */ private WebClient webClient; /*  AccessToken. */ private String accessToken; public Facebook() { initWebClient(); } /** *   Facebook   email  password. */ public void login(String email, String password) { try { /*   . */ HtmlForm loginForm = getForm(LOGIN_FORM_ID); if (loginForm != null) { /*   email. */ loginForm.getInputByName(INPUT_EMAIL_NAME).setValueAttribute(email); /*   password. */ loginForm.getInputByName(INPUT_PASSWORD_NAME).setValueAttribute(password); /*   ""   ,     Facebook. */ HtmlPage page = loginForm.getInputByName(INPUT_LOGIN_NAME).click(); /*     . */ HtmlForm accessForm = getForm(page, ACCESS_FORM_ID); if (accessForm != null) { /*    ""   ,     Facebook. */ page = accessForm.getInputByName(INPUT_ALLOW_NAME).click(); } /* ,      . */ if (page.getBody().getTextContent().trim().equalsIgnoreCase("success")) { /*  AccessToken. */ getAccessToken(page.getUrl()); } } } catch (Exception e) { e.printStackTrace(); } } public String getAccessToken() { return this.accessToken; } /** *    . */ public String getUserInfo(String id) { /*   . */ String requestURL = GRAPH_URL + id + "?access_token=" + accessToken; /*  . */ return sendRequest(requestURL); } /** *     . */ public String writeInWall(String id, String msg) { /*   . */ String requestURL = GRAPH_URL + id + "?access_token=" + accessToken + "&message=" + encodeMsg(msg); /*     . */ return publish(requestURL); } /** *  WebClient. */ private void initWebClient() { webClient = new WebClient(); /*  CSS. */ webClient.setCssEnabled(false); /*  JavaScript. */ webClient.setJavaScriptEnabled(false); } /** *    formID. */ private HtmlForm getForm(String formID) { HtmlForm form = null; try { HtmlPage page = webClient.getPage(getLoginURL()); form = getForm(page, formID); } catch (Exception e) { e.printStackTrace(); } return form; } /** *    formID   page. */ private HtmlForm getForm(HtmlPage page, String formID) { HtmlForm form = null; List<HtmlForm> forms = page.getForms(); for (HtmlForm tForm : forms) { if (tForm.getId().equalsIgnoreCase(formID)) { form = tForm; break; } } return form; } /** *  AccessToken    link. */ private void getAccessToken(URL link) { String ref = link.getRef(); String token = "access_token="; String expires = "&expires"; int startIndex = ref.indexOf(token); int endIndex = ref.indexOf(expires); if (startIndex != -1 && endIndex != -1) { accessToken = ref.substring(startIndex + token.length(), endIndex); } } /** *  . */ private String sendRequest(String request) { String result = null; try { HttpGet get = new HttpGet(request); DefaultHttpClient client = new DefaultHttpClient(); HttpResponse response = client.execute(get); result = EntityUtils.toString(response.getEntity()); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } /** *  post . */ private String publish(String request) { String result = null; try { HttpPost post = new HttpPost(request); DefaultHttpClient client = new DefaultHttpClient(); HttpResponse response = client.execute(post); result = EntityUtils.toString(response.getEntity()); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } /*   . */ private String encodeMsg(String msg) { try { msg = URLEncoder.encode(msg, HTTP.UTF_8); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return msg; } /*   . */ private String getLoginURL() { return "https://www.facebook.com/dialog/oauth?client_id=" + API_KEY + "&redirect_uri=" + REDIRECT_URL + "&scope=" + getPermissions() + "&response_type=token"; } /*    . */ private String getPermissions() { StringBuilder permissions = new StringBuilder(); permissions.append("read_stream,"); permissions.append("user_birthday,"); permissions.append("user_religion_politics,"); permissions.append("user_relationships,"); permissions.append("user_relationship_details,"); permissions.append("user_hometown,"); permissions.append("user_location,"); permissions.append("user_likes,"); permissions.append("user_activities,"); permissions.append("user_interests,"); permissions.append("user_education_history,"); permissions.append("user_work_history,"); permissions.append("user_online_presence,"); permissions.append("user_website,"); permissions.append("user_groups,"); permissions.append("user_events,"); permissions.append("user_photos,"); permissions.append("user_videos,"); permissions.append("user_photo_video_tags,"); permissions.append("user_notes,"); permissions.append("user_about_me,"); permissions.append("user_status,"); permissions.append("friends_birthday,"); permissions.append("friends_religion_politics,"); permissions.append("friends_relationships,"); permissions.append("friends_relationship_details,"); permissions.append("friends_hometown,"); permissions.append("friends_location,"); permissions.append("friends_likes,"); permissions.append("friends_activities,"); permissions.append("friends_interests,"); permissions.append("friends_education_history,"); permissions.append("friends_work_history,"); permissions.append("friends_online_presence,"); permissions.append("friends_website,"); permissions.append("friends_groups,"); permissions.append("friends_events,"); permissions.append("friends_photos,"); permissions.append("friends_videos,"); permissions.append("friends_photo_video_tags,"); permissions.append("friends_notes,"); permissions.append("friends_about_me,"); permissions.append("friends_status,"); permissions.append("publish_stream,"); permissions.append("create_event,"); permissions.append("rsvp_event,"); permissions.append("sms,"); permissions.append("offline_access,"); permissions.append("publish_checkins,"); permissions.append("manage_friendlists,"); permissions.append("manage_pages"); return permissions.toString(); } } 


рд╣рдо рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ред

 public class Test { public static void main(String[] args) { Facebook facebook = new Facebook(); /* . */ facebook.login("email", "pass"); /*   . */ System.out.println(facebook.getUserInfo("me/feed")); /*   . */ System.out.println(facebook.writeInWall("me/feed", "!")); } } 


рд╣рдо рдЕрдкрдиреЗ рдкреЗрдЬ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦрддреЗ рд╣реИрдВ:


рдкреБрдирд╢реНрдЪ
рдореИрдВ рдХрд┐рд╕реА рднреА рдЖрд▓реЛрдЪрдирд╛ рдХреЛ рд╕реБрдиреВрдВрдЧрд╛ рдФрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реВрдВрдЧрд╛ред рдореБрдЭреЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗред

Source: https://habr.com/ru/post/In129614/


All Articles