Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
1,44 MB
Nội dung
BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT Mà ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ THỰC TẬP CƠ SỞ CHUYÊN NGÀNH TÌM HIỂU VÀ SỬ DỤNG FACEBOOK API Ngành: An tồn thơng tin Tp Hồ Chí Minh, 2019 BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT Mà ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ THỰC TẬP CƠ SỞ CHUYÊN NGÀNH TÌM HIỂU VÀ SỬ DỤNG FACEBOOK API Ngành: An tồn thơng tin Sinh viên thực hiện: Ma Ri Hạnh Lê Nguyễn Mai Trâm Lớp: AT13N Giáo viên hướng dẫn: ThS Lê Anh Tiến Khoa An tồn thơng tin – Học viện Kỹ thuật mật mã Tp Hồ Chí Minh, 2019 LỜI CẢM ƠN Trong q trình thực thực tập sở chuyên ngành này, chúng em xin gửi lời cảm ơn đến giáo viên hướng dẫn thầy Lê Anh Tiến tận tình hướng dẫn suốt q trình chúng em thực hồn thành sở chuyên ngành Chúng em xin chân thành cảm ơn q Thầy, Cơ khoa An tồn thông tin ,Học viện Kĩ thuật Mật mã tận tình truyền đạt kiến thức năm học tập Với vốn kiến thức tiếp thu trình học khơng tảng cho q trình nghiên cứu khóa luận mà hành trang q báu để em bước vào đời cách vững tự tin Cuối cùng, chúng em xin kính chúc quý Thầy, Cơ gia đình dồi sức khỏe thành công nghiệp giảng dạy cao quý SINH VIÊN THỰC HIỆN Ma Ri Hạnh Lê Nguyễn Mai Trâm LỜI NÓI ĐẦU Thuật ngữ API dường xuất lần viết Ira W Cotton, Cấu trúc liệu kỹ thuật cho đồ họa máy tính từ xa, xuất năm 1968 Trong việc xây dựng ứng dụng, API đơn giản hóa việc lập trình cách trừu tượng hóa việc triển khai phơi bày đối tượng hành động mà nhà phát triển cần Mặc dù giao diện đồ họa cho ứng dụng email cung cấp cho người dùng nút thực tất bước để tìm nạp tơ sáng email mới, API cho đầu vào / đầu tệp cung cấp cho nhà phát triển chức chép tệp từ vị trí sang vị trí khác mà không cần yêu cầu nhà phát triển hiểu hoạt động hệ thống tệp xảy đằng sau hậu trường Chun đề thực nhằm mục đích tìm hiểu API, API mạng xã hội tập trung vào API mạng xã hội Facebook Mục tiêu đặt thực chuyên đề là: Nắm tổng quan API, API mạng xã hội Tìm hiểu Facebook API; Viết ứng dụng sử dụng Facebook API nhằm củng cố kiến thức lý thuyết Sau thời gian thực hiện, mục tiêu đạt Tuy nhiên sách API Facebook có nhiều thay đổi , thời gian thực tương đối ngắn nên chắn không tránh khỏi thiếu sót Rất mong góp ý thầy cô, bạn sinh viên để chuyên đề hoàn thiện SINH VIÊN THỰC HIỆN Ma Ri Hạnh Lê Nguyễn Mai Trâm MỤC LỤC Danh mục kí hiệu viết tắt hình vẽ Chương API I API 1 Khái niệm Một số loại API Tại phải dùng API? II REST API REST RESTful API Kiến trúc REST 3 Cách hoạt động .4 III Kết luận chương .5 Chương GRAPH API I Gới thiệu Graph API II Facebook Graph API Facebook Graph API gì? Một số thành phần Facebook Grạph API 2.1 HTTP 2.2 Mã truy cập 2.3 Cấu trúc 2.4 URL lưu trữ 2.5 ID đối tượng 2.6 Phiên Hướng dẫn sử dụng Facebook Graph API 10 III Kết luận chương 12 Chương FACEBOOK API 13 I API mạng xã hội 13 Facebook 14 Twitter 14 Instagram 14 Pinterest 14 Google+ 14 LinkedIn 14 Hatena 14 II Facebook API .14 Facebook API gì? .14 Cách thức hoạt động Facebook API 14 Một số phương thức Facebook API 15 API với FQL 17 III Kiến trúc hệ thống Facebook 18 Mơ hình ứng dụng web thơng thường 18 Mơ hình ứng dụng web Facebook 19 Cách thức làm việc .20 IV Ứng dụng tương lai .21 V Kết luận chương 22 Chương XÂY DỰNG ỨNG DỤNG VỚI FACEBOOK API 23 I Mô tả ứng dụng 23 II Lựa chọn công cụ, ngơn ngữ lập trình 23 III Tạo ứng dụng 23 Tạo app để giao tiếp với Facebook 23 Chuẩn bị số thông tin trước tạo project 24 Tạo Project JAVA IDE 27 Chạy Project 28 IV Kết luận chương 31 Kết luận 32 Tài liệu tham khảo 33 PHỤ LỤC 34 DANH MỤC KÍ HIỆU VIẾT TẮT VÀ HÌNH VẼ DANH MỤC KÍ HIỆU VÀ VIẾT TẮT API Application programing interface REST Representational State Transfer FQL Facebook Query Language FBJS Facebook Javascript CSS Cascading Style Sheets SDK Software Development Kit DANH MỤC HÌNH VẼ Hình 1.1.1 Minh họa API Hình 1.1.2 Minh họa kiến trúc REST Hình 1.1.3 Minh họa cách REST hoạt động Hình 1.2.1 Phương thức Facebook Hình 1.1 Mơ hình web thơng thường Hình 1.2 Mơ hình web Facebook Hình 1.3 Mơ hình web facebook làm việc vớ cache H ình1.4 Cách thức làm việc Facebook Hình 3.3 Giao diện tạo app với Facebook Hình 3.4 Giao diện GRAPH API Hình 3.5 Hướng dẫn lấy id app Hình 3.6 Hướng dẫn lấy id page Facebook Hình 3.7 Hướng dẫn lấy url thơng qua Graph API Hình 3.8 Hướng dẫn lấy url thơng qua Graph API Hình 3.9 Mơ tả cấu trúc Project cần tạo Hình 4.1 Kết chạy project Hình 4.2 Giao diện đăng nhập vào Facebook Hình 4.3 Thơng tin lấy chạy Project CHƯƠNG API I API Khái niệm API viết tắt Application Programming Interface (giao diện lập trình ứng dụng) Nó giao tiếp phần mềm dùng ứng dụng khác Cũng giống bàn phím thiết bị giao tiếp ngườI dùng máy tính, API giao tiếp phần mếm chẳng hạn chương trình hệ điều hành (HĐH) Hình 1.1.1 Bộ API HĐH khác nhau, làm cho HĐH khác thường khơng tương thích với Ví dụ phần mềm HĐH Linux khơng thể chạy máy Windows Linux Windows có API hòan tòan khác Một mục đích API cung cấp khả truy xuất đến tập hàm hay dùng — ví dụ, hàm để vẽ cửa sổ hay icon hình Các API, hầu hết interfaces, trừu tượng (abstract) Phần mềm mà muốn cung cấp truy xuất đến thơng qua API cho sẵn, phải thực API Trong nhiều tình huống, API thường phần SDK, hay software development kit Một SDK bao gồm API công cụ/phần cứng, hai thuật ngữ khơng thay cho Ví Dụ :Khi sử dụng ứng dụng thiết bị di động, ứng dụng kết nối Internet gửi liệu tới máy chủ Sau máy chủ lấy liệu, diễn giải liệu, thực hành động cần thiết gửi liệu trở lại thiết bị bạn Ứng dụng giải thích liệu hiển thị thông tin đọc cho bạn Và gọi API Để giải thích rõ hơn, tham khảo ví dụ đây: Thử tưởng tượng bạn nhà hàng, menu có loạt ăn để bạn lựa chọn Nhà bếp phần hệ thống, thực nhiệm vụ chuẩn bị mà bạn đặt Cái thiếu người để truyền đạt ăn mà bạn yêu cầu tới nhà bếp mang đồ ăn cho bạn Đó người phục vụ nói API Người phục vụ truyền đạt yêu cầu bạn tới nhà bếp mang đồ ăn cho bạn Một số loại API API xã hội API phương tiện truyền thông xã hội API xã hội, cung cấp cách để nhà phát triển xây dựng ứng dụng giúp tăng cường sử dụng dịch vụ truyền thông xã hội API thương mại điện tử API thương mại điện tử cho phép nhà phát triển xây dựng ứng dụng cải thiện chức số dịch vụ thương mại điện tử, cung cấp thông tin chi tiết dựa liệu cho nhà tiếp thị nhân viên bán hàng muốn giúp bán sản phẩm trang web thương mại điện tử Ví dụ API thương mại điện tử bao gồm API eBay API quảng cáo sản phẩm Amazon API quản lý người dùng API quản lý người dùng cung cấp phương thức để quản lý theo chương trình quyền người dùng chức tài khoản người dùng Các API đặc biệt hữu ích cho doanh nghiệp tổ chức lớn có cập nhật thường xuyên vào danh sách kiểm sốt truy cập họ Hai ví dụ API quản lý người dùng API quản lý Google Analytics API quản lý người dùng IBM API liên hệ API danh bạ thường sử dụng để xây dựng ứng dụng quản lý danh sách liên hệ người dùng Ví dụ hai API liên hệ khác rõ rệt khung Danh bạ Apple Lusha API ngẫu nhiên API ngẫu nhiên hướng đến ứng dụng làm cho dịch vụ có nhiều chức hướng tới việc cho phép nhà phát triển vui chơi thử nghiệm Tại phải dùng API? Bản thân "phần mềm" buộc phải có nhiều thành phần giao tiếp tận dụng lẫn nhau, không nhà sản xuất ứng dụng hay nhà thiết kế web phải thực thêm nhiều công việc nằm ngồi trọng tâm họ Chính nên phải dùng API API coi khớp nối thành phần phần mềm, giúp phần mềm giao tiếp với tận dụng lực II.REST API Chúng ta thường nghe REST RESTful API phát triển ứng dụng Web, viết ứng dụng trải dài từ Web server tới Mobile app Tuy thân REST lại tên kỹ thuật, mà gần với quy tắc dùng để tạo API REST RESTful API REST hay ReST (REpresentational State Transfer) dạng chuyển đổi cấu trúc liệu đề xuất nhà khoa học máy tính Roy Thomas Fielding vào năm 2012 REST kiểu kiến trúc sử dụng việc giao tiếp máy tính (máy tính cá nhân máy chủ trang web) việc quản lý tài nguyên internet REST sử dụng nhiều việc phát triển ứng dụng Web Services sử dụng giao thức HTTP giao tiếp thông qua mạng internet Các ứng dụng sử dụng kiến trúc REST gọi ứng dụng phát triển theo kiểu RESTful Trên thực tế hay sử dụng thuật ngữ REST thay cho RESTful ngược lại Kiến trúc REST Kiến trúc REST có số đặc điểm sau: Nhất quán xuyên suốt API Ví dụ: ln ln sử dụng danh từ số nhiều thay số nhiều, số Tồn mà không lưu trạng thái (Stateless existence), ví dụ khơng sử dụng session server Đây lý lại có cụm State Transfer (ST) REST Tính chất đảm bảo client submit request, request bao gồm tồn thơng tin mà server cần để xử lý request Đây điều cần thiết để build ứng dụng phục vụ lên tới hàng triệu user Sử dụng HTTP status code Sử dụng URL Endpoint có phân tầng logic Đánh version URL thay HTTP Headers Sau truy cập vào link kết ta click vào button login Sau click ta kết sau: Hình 4.2 29 Nhập thơng tin cần thiết để đăng nhập vào facebook bạn Sau đăng nhập thành cơng ta có kết sau: Hình 4.3 30 IV Kết luận chương Xây dựng ứng dụng thành công , đáp ứng yêu cầu đặt ban đầu Có thể thống kê id, message, updated_time viết trang Ưu nhược điểm Ưu điểm Tận dụng cộng đồng mạng xã hội facebook Đáp ứng yêu cầu nghiệp vụ cần thiết Giao diện thân thiện với người dùng Nhược điểm Tính ứng dụng chưa đa dạng Từ năm 2018 Fcaebook siết chặt bảo mật nên yêu cầu ứng dụng khó khăn cha ưthể khai thác hết mạnh Facebook 31 KẾT LUẬN Bốn chương chuyên đề thể mục tiêu đặt thực chuyên đề đạt Cụ thể: Chương hệ thống lại kiến thức tổng quan API Chương ưu nhược điểm, thành phần sử dụng API loại API phổ biến Tìm hiểu qua REST API Chương giới thiệu cho GRAPH API cụ thể Facebook Graph API, cách thức hoạt động cách sử dụng GRAPH API Chương làm rõ loại API phổ biến API mạng xã hội Cùng với tìm hiểu sâu API Facebook , mạng xã hội lớn giới với lượng người dùng khổng lồ Trong chương 4, ứng dụng minh họa việc sử dụng API Facebook xây dựng thành cơng Nó cho phép hệ thống trích xuất thơng tin post trang Facebook Dù vậy, số vấn đề liên quan đến quyền sử dụng thông tin người dùng chưa thể minh họa triệt để chuyên đề Ứng dụng dừng lại mức đơn giản sử dụng API Facebook nào, sử dụng vào việc Kể từ Tháng năm 2018, sách API dành cho nhà phát triển ứng dụng Facebook có nhiều thay đổi, chuyên đề chưa thể làm rõ hết tiềm khai thác Facebook API Việc giải điểm tồn hướng phát triển tương lai chuyên đề 32 TÀI LIỆU THAM KHẢO [1] Braunstein, Mark L (26 July 2018) Health Informatics on FHIR: How HL7's New API is Transforming Healthcare Springer p ISBN 978-3-319-93414-3 [2] sproutsocial.com/insights/ [3] API wiki : en.wikipedia.org/wiki/Application_programming_interface#cite_note-Braunstein2018-1 [4] Parnin, Chris; Treude, Cristoph (May 2011) "Measuring API Documentation on the Web" Web2SE Retrieved 22 July 2016 [5] Đồ án tốt nghiệp ứng dụng facebook Hoàng Thị Hiền lớp K51CHTTT (ĐH CNTT – ĐH QGHN) [6] Facebook Developer Wiki Nguồn: http://wiki.developers.facebook.com/ [7] Trang tài liệu nhà phát triển facebook: http://developers.facebook.com/docs/ 33 Source Code Project * index.jsp PHỤ LỤC DEMO // This is called with the results from from FB.getLoginStatus() function statusChangeCallback(response) { console.log('statusChangeCallback'); console.log(response); console.log(response.authResponse.accessToken); //alert(response.authResponse.accessToken); if (response.status === 'connected') { window.location.href='Sign_in_Controller.jsp?access_token='+response.authResponse.acc essToken; } else { // The person is not logged into your app or we are unable to tell document.getElementById('status').innerHTML = 'Please log ' + 'into this app.'; } } // This function is called when someone finishes with the Login // Button See the onlogin handler attached to it in the sample // code below function checkLoginState() { FB.getLoginStatus(function(response) { statusChangeCallback(response); }); } window.fbAsyncInit = function() { FB.init({ appId : '365789034115218',//ĐIỀN ID CỦA APP VỪA LẤY Ở TRÊN cookie : true, // enable cookies to allow the server to access // the session xfbml : true, // parse social plugins on this page version : 'v4.0' // use graph api version 4.0 }); FB.getLoginStatus(function(response) { statusChangeCallback(response); }); }; // Load the SDK asynchronously (function(d, s, id) { 34 var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); // Here we run a very simple test of the Graph API after login is // successful See statusChangeCallback() for when this call is made 35 *Sing_in_Controller.jsp Insert title here window.location.href="Profile_Page.jsp"; 36 *Profile_Page.jsp Insert title here Profile Page Page : id : 0){ Post_Use_Bean obj_Post_Use_Bean=new Post_Use_Bean(); while(it_list_of_posts.hasNext()){ obj_Post_Use_Bean=it_list_of_posts.next(); %> 37 38 *Post_Modal.java package com.chillyfacts.com.posts; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONObject; public class Post_Modal { public List < Post_Use_Bean > call_me_to_get_posts(String access_token) throws Exception { List < Post_Use_Bean > list_posts = new ArrayList < Post_Use_Bean > (); try { String url = "https://graph.facebook.com/v4.0/2388761094527134/feed?fields=message%2Cupdated_time& access_token=" + access_token; URL obj = new URL(url); HttpURLConnection = (HttpURLConnection) obj.openConnection(); // optional default is GET con.setRequestMethod("GET"); //add request header con.setRequestProperty("User-Agent", "Mozilla/5.0"); int responseCode = con.getResponseCode(); System.out.println("\nSending 'GET' request to URL : " + url); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in readLine()) != null) { response.append(inputLine); } in close(); System.out.println(response); JSONObject data_response = new JSONObject(response.toString()); JSONArray data_array = data_response.getJSONArray("data"); System.out.println(data_array.length()); for (int count = 0; count < data_array.length(); count++) { Post_Use_Bean obj_Post_Use_Bean = new Post_Use_Bean(); try { obj_Post_Use_Bean.setMessage(data_array.getJSONObject(count).getString("message")); } catch (Exception e) { System.out.println(e); } 39 obj_Post_Use_Bean.setUpdated_time(data_array.getJSONObject(count).getString("updated_ time")); obj_Post_Use_Bean.setId(data_array.getJSONObject(count).getString("id")); list_posts.add(obj_Post_Use_Bean); } JSONObject data_paging = new JSONObject(data_response.getJSONObject("paging")); Post_Use_Bean obj_Post_Use_Bean = new Post_Use_Bean(); obj_Post_Use_Bean.setPaging_next(data_paging.getString("next")); obj_Post_Use_Bean.setPaging_previous(data_paging.getString("previous")); list_posts.add(obj_Post_Use_Bean); } catch (Exception e) { System.out.println(e); } //return list_posts; return list_posts; } } 40 *Post_Use_Bean.java package com.chillyfacts.com.posts; public class Post_Use_Bean { private String message; private String updated_time; private String id; private String paging_previous; private String paging_next; public String getPaging_previous() { return paging_previous; } public void setPaging_previous(String paging_previous) { this.paging_previous = paging_previous; } public String getPaging_next() { return paging_next; } public void setPaging_next(String paging_next) { this.paging_next = paging_next; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getUpdated_time() { return updated_time; } public void setUpdated_time(String updated_time) { this.updated_time = updated_time; } public String getId() { return id; } public void setId(String id) { this.id = id; } } 41 *Profile_Bean.java package com.chillyfacts.com.profile; public class Profile_Bean { private String user_name; private String profile_picture; private String id; private String access_token; public String getAccess_token() { return access_token; } public void setAccess_token(String access_token) { this.access_token = access_token; } public String getUser_name() { return user_name; } public void setUser_name(String user_name) { this.user_name = user_name; } public String getProfile_picture() { return profile_picture; } public void setProfile_picture(String profile_picture) { this.profile_picture = profile_picture; } public String getId() { return id; } public void setId(String id) { this.id = id; } } 42 *Profile_Modal.java package com.chillyfacts.com.profile; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import org.json.JSONObject; public class Profile_Modal { public Profile_Bean call_me(String access_token) throws Exception { String url = "https://graph.facebook.com/v4.0/2388761094527134/?fields=name%2Cid%2Cpicture%7Burl%7 D&access_token="+access_token; URL obj = new URL(url); HttpURLConnection = (HttpURLConnection) obj.openConnection(); // optional default is GET con.setRequestMethod("GET"); //add request header con.setRequestProperty("User-Agent", "Mozilla/5.0"); int responseCode = con.getResponseCode(); System.out.println("\nSending 'GET' request to URL : " + url); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response); Profile_Bean obj_Profile_Bean=new Profile_Bean(); JSONObject myResponse = new JSONObject(response.toString()); obj_Profile_Bean.setUser_name(myResponse.getString("name")); obj_Profile_Bean.setId(myResponse.getString("id")); JSONObject picture_reponse=myResponse.getJSONObject("picture"); JSONObject data_response=picture_reponse.getJSONObject("data"); System.out.println("URL : "+data_response.getString("url")); obj_Profile_Bean.setProfile_picture(data_response.getString("url")); return obj_Profile_Bean; } } 43 ...BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT Mà ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ THỰC TẬP CƠ SỞ CHUYÊN NGÀNH TÌM HIỂU VÀ SỬ DỤNG FACEBOOK API Ngành: An tồn thơng tin Sinh viên thực hiện: Ma Ri... trường Chuyên đề thực nhằm mục đích tìm hiểu API, API mạng xã hội tập trung vào API mạng xã hội Facebook Mục tiêu đặt thực chuyên đề là: Nắm tổng quan API, API mạng xã hội Tìm hiểu Facebook API; ... nhấp vào Gửi III Kết luận chương Nếu chương trình bày REST API chương trình bày GRAPH API đắc biệt Facebook Graph API Hiện nhiều bạn có nhu cầu tìm hiểu sử dụng Facebook Graph API lập trình cơng