Tìm kiếm


    Sử dụng Facebook Page Graph API quản lý bài viết cho trang


    Đặt vấn đề

    Chắc hẳn ở đây các bạn ai cũng biết đến Facebook rồi đúng không và cũng không lạ lẫm gì với cá Facebook Page (Các trang Facebook) như BeatVN, VNBG 😂...

    Các page này mỗi khi đăng bài sẽ có người viết bài và đăng trực tiếp trên ứng dụng Facebook bằng tài khoản của trang như cách các bạn vẫn đăng Trạng Thái. Điều này thì ai cũng biết rồi.

    Nhưng bây giờ mình VD mình có một trang Web về tin tức, một blog về chia sẻ kiến thức như Website của mình (Code Mega) và mỗi lần mình đăng một bài viết mới lên Website mình muốn bài viết đó cũng được đăng lên Page trên Facebook.

    Có phải các bạn sẽ làm theo flow như này:

    (1) Đăng bài viết lên Website -> (2) Đăng nhập vào TK Facebook -> (3) Vào Facebook Page -> (4) Viết bài + Copy link bài viết ở bước 1 -> (6) Đăng bài viết lên Facebook.

    Như các bạn thấy đó. Cách làm trên khá mất thời gian và không có việc tự động khóa đúng không!

    Vậy để việc này được làm một cách tự động khi chúng ta đăng bài trên Webiste hoặc từ ứng dụng thì đồng thời trên cũng sẽ tự động đăng chia sẻ bài viết đó lên Facebook Page thì chúng ta sẽ dùng đến Facebook Page Graph API.

    Ở bài viết này mình sẽ hướng dẫn các bạn làm điều đó. Cùng xem nhé....

    Let's begin....

    Facebook Graph API là gì?

    Trước tiên chúng ta sẽ tìm hiểu qua về Facebook Graph API.

    Facebook Graph API là một giao diện lập trình cho phép các nhà phát triển truy cập thông tin từ các nền tảng mạng xã hội.

    Nó cho phép các nhà phát triển xây dựng các ứng dụng có thể đọc và viết dữ liệu vào và từ nền tảng Facebook. Graph API là một API thấp cấp, RESTful API cung cấp một cách để tương tác với dữ liệu Facebook.

    Nó được truy cập bằng các yêu cầu HTTP và các phản hồi được trả về trong định dạng JSON. Graph API là cách chính để lấy dữ liệu vào và ra khỏi nền tảng Facebook và nó được sử dụng bởi nhiều ứng dụng chính thức của công ty và các ứng dụng bên thứ ba.

    Tạo trang trên Facebook

    Trước tiên thì các bạn cần có trang trên Facebook cho riêng mình trước. Bạn nào chưa có thì có thể làm như sau:

    B1: Vào tài khoản Facebook và chọn cái icon hình vuông như hình dưới

    dsad

    B2: Điền các thông tin của trang vào và nhấn Tạo Trang

    dsad

    Đây là trang mà mình vừa tạo ra:

    dá

    Tạo App Facebook

    Để sử dụng được Facebook Page Graph API thì các bạn cần tạo một ứng dụng trên tài khoản Facebook của mình. 

    Các bạn làm theo các bước sau:

    B1: Đăng ký tài khoản developer tại https://developers.facebook.com/async/registration/ (Bạn nào có rồi thì có thể bỏ qua)

    B2: Vào phần Ứng dụng của tôi trên giao diện hoặc truy cập qua link sau: https://developers.facebook.com/apps/?show_reminder=true 

    B3: Nhấn Tạo ứng dụng (Create App)

    dấd

    B4: Điền các thông tin cần thiết

    đâs

    đasa

    Tiếp theo lấy App ID và App Secret

    Vào phần Cài đặt -> Thông tin cơ bản

    • - ID ứng dụng (App ID)
    • - Khóa bí mật của ứng dụng (App Secret)

    Nhấn Hiển thị để xem App Secret nhé. Sau đó các bạn lưu 2 thông tin này lại để dùng cho phần cài đặt tiếp theo,

    đá

    B4: Bật Chế độ của ứng dụng ở trạng thái Chính Thức để mọi người có thể thấy bài viết

    Lấy Facebook Page Access Token

    B1: Vào trang Graph API Explorer https://developers.facebook.com/tools/explorer

    B2: Cấp quyền cho ứng dụng bạn vừa tạo. Các bạn chú ý bước này nha (Important)

    dsad

    Mục Ứng dụng trên Meta các bạn chọn ứng dụng mà các bạn đã tạo.

    Phần Người dùng hoặc Trang thì chọn Nhận mã truy cập Trang

    Nếu nó hiện cái popup yêu cầu cấp quyền thì các bạn chọn Trang muốn sử dụng và nhấn tiếp tục như bên dưới nhé

    đasd

    Tới phần Quyền các bạn thêm các quyền sau:

    • - email
    • - public_profile
    • - pages_show_list
    • - pages_read_engagement
    • - pages_manage_posts

    Config cuối cùng sau khi setup quyền như trông như sau:

    B3: Lấy ID của Trang

    Tại phần param của URL Các bạn bấm Generate Access Token sau đó bấm Gửi.

    Kết quả trả về cho chúng ta là:

    {
      "id": "102806832707854",
      "name": "Code Mega Test"
    }

    Trong đó id chính là id của Trang Code Mega Test. Các bạn lưu id này lại nhé

    B4: Lấy Access Token không bị hết hạn

    Tại sao phải làm điều này? Đơn giản là Access Token bạn lấy trên trang Graph API Explorer là Token ngắn hạn. Nghĩa là nó sẽ không dùng được lâu, sau 1 khoảng thời gian nhất định nào đó bạn sẽ cần tạo lại mã này để sử dụng Facebook API.

    Vì vậy chúng ta cần tạo ra một Token mà có thể dùng mãi mãi.

    Để làm được như vậy các bạn làm như sau:

    4.1. Mở Postman lên. Bạn nào chưa có thì có thể vào trang chủ của Postman để tải nhé: Download Postman | Get Started for Free

    4.2. Paste URL sau vào Postman

    https://graph.facebook.com/v15.0/oauth/access_token?grant_type=fb_exchange_token&client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&fb_exchange_token=YOUR_EXCHANGE_TOKEN

    Các bạn giữ nguyên phần KEY và thay đổi các thông số VALUE như sau:

    • - grant_type: fb_exchange_token
    • - client_id: ID của ứng dụng đã tạo ở phần Tạo App Facebook bên trên
    • - client_secret: Khóa bí mật của ứng dụng ở phần Tạo App Facebook bên trên
    • - fb_exchange_token: Các bạn vào trang https://developers.facebook.com/tools/accesstoken/ để lấy mã Token trong phần: User Token như hình bên dưới
    • đasa
    • GRAPH_API_VERSION: Là version hiện tại của Facebook. Các bạn vào https://developers.facebook.com/tools/explorer sẽ thấy. Ở bài viết này hiện tại đang là v15.0
    • đá

    4.3. Sau khi đã điền đủ các thông tin ở trên các bạn nhấn Send và sẽ nhận được bộ data như sau:

    {
        "access_token": "EAAQC9wWeuRsBALkADYuKGnre33XZCmCUVFSpHEimw5e4I3CfkUH3CQI7mCHp18UhR6aUMYrZAxmImtqyeRJEGNELvxR6PL7TtI0u0RJGcDGEG66fdqGH0QjSIeN",
        "token_type": "bearer",
        "expires_in": 5183009
    }

    4.4. Sau khi lấy được access_token ở trên các bạn thực hiện gửi request lấy long token như sau

    Truy cập link: https://developers.facebook.com/tools/explorer và gửi 1 request theo cấu hình sau để lấy ID của người dùng

    đá

     

    Các bạn truy cấp vào đường link: https://www.sociablekit.com/app/convert_token_to_never_expire.php Trang này cho phép lấy access_token vĩnh viễn

    Vào Postman và gửi request như sau:

    https://graph.facebook.com/GRAPH_API_VERSION/USER_ID/accounts?access_token=YOUR_TOKEN

    Trong đó:

    USER_ID: Là ID mà các bạn lấy được ở phần 4.4

    YOUR_TOKEN:access_token mà các bạn lấy được ở phần 4.3

    đấ

    #Important: Các bạn lưu lại mã access_token vừa lấy được ở trên rồi truy cập vào trang https://www.sociablekit.com/app/convert_token_to_never_expire.php và làm như sau:

    đá

    Page access_token (4.4) ở trên vào chỗ input và nhận Show Access Token That Nerver Expire và lưu cái Access Token này lại để sử dụng. Nhớ giữ cẩn thận nha.

    Mục định lấy token tại bên thứ 3 như này để bên họ sẽ tự refresh token cho mình khi hết hạn nên các bạn an tâm nhé.

    Sử dụng với Postman và Code C#

    Khi đã có mã access_token rồi thì chúng ta bắt đầu vào Code và Test thử thôi.

    Ở đây mình sẽ nói 2 API dùng để Đăng Bài và Xóa Bài. Các bạn nào muốn được thêm thì có thể vào link Tài liệu tham khảo về quyền - API Đồ thị (facebook.com) để tham khảo thêm nhé

    API đăng bài viết:

    https://graph.facebook.com/FACEBOOK_PAGE_ID/feed?message=YOUR_MESSAGE&access_token=YOUR_ACCESS_TOKEN&link=YOUR_LINK

    Trong đó:

    FACEBOOK_PAGE_ID: Là ID mà các bạn lấy được ở Bước 3 mục Lấy Facebook Page Access Token

    YOUR_MESSAGE: Phần nội dung mà các bạn muốn đăng

    YOUR_LINK: URL muốn gắn vào bài viết

    YOUR_ACCESS_TOKEN: Là token mà bạn lấy được ở mục 4.4

    API xóa bài viết:

    https://graph.facebook.com/POST_ID?access_token=YOUR_ACCESS_TOKEN

    Trong đó:

    POST_ID: Là ID Facebook trả về cho bạn sau khi đăng bài viết thành công

    YOUR_ACCESS_TOKEN: Là token mà bạn lấy được ở mục 4.4

    Sử dụng với Postman

    Dưới đây là kết quả mà mình sử dụng với Postman

    Đăng bài

    Nếu đăng bài thành công Facebook sẽ trả về cho bạn một Id. Đây chính là Id của bài viết bạn vừa đăng

    Xóa bài

    Để xóa bài các bạn sử dụng Id mà Facebook trả về ở phần đăng bài 

    đá

    Sử dụng với Code C#

    Đây là phần code mà mình sẽ sử dụng để đăng bài

    public class FacebookPageHelper
    {
        private static readonly string _baseUrl = "https://graph.facebook.com";
    
        public static async Task CreateAsync(string pageId, string accessToken, string link, string message)
        {
            var client =
                new RestClient(_baseUrl + $"/{pageId}/feed?message={message}&access_token={accessToken}&link={link}");
            var request = new RestRequest { Method = Method.Post };
            var response = await client.ExecuteAsync(request);
    
            if (!response.IsSuccessful || string.IsNullOrEmpty(response.Content)) return "";
    
            var res = JsonConvert.DeserializeObject(response.Content);
    
            return res == null ? "" : res.Id;
        }
        
        public static async Task DeleteAsync(string facebookPostId, string accessToken)
        {
            var client =
                new RestClient(_baseUrl + $"/{facebookPostId}/?access_token={accessToken}");
            var request = new RestRequest { Method = Method.Delete };
            var response = await client.ExecuteAsync(request);
    
            if (!response.IsSuccessful || string.IsNullOrEmpty(response.Content)) return false;
    
            var res = JsonConvert.DeserializeObject(response.Content);
    
            return res?.Success ?? false;
        }
    }
    
    public class FacebookHelperModel
    {
        public string Id { get; set; }
        public bool Success { get; set; }
    }

    Các bạn có thể sử dụng bất cứ ngôn ngữ nào cũng được nhé flow theo code của mình là được.

    Kết

    Vậy là nó đã chạy ngon lành rồi. Các bạn thấy hay thì chia sẻ giúp mình nhé.

    Cám ơn các bạn đã theo dõi. PP 😎

     

     


    Tiểu sử
    Are you one or zero?


    Bình luận