- [DEVEXPRESS] Hỗ trợ tìm kiếm highlight không dấu và không khoảng cách trên Gridview Filter
- [C#] Chia sẻ source code phần mềm Image Downloader tải hàng loạt hình ảnh từ danh sách link url
- [C#] Chụp hình và quay video từ camera trên winform
- [C#] Chia sẽ full source code tách file Pdf thành nhiều file với các tùy chọn
- Giới thiệu về Stock Tracker Widget - Công cụ theo dõi cổ phiếu và cảnh báo giá tăng giảm bằng C# và WPF
- [VB.NET] Chia sẻ công cụ nhập số tiền tự động định dạng tiền tệ Việt Nam
- [VB.NET] Hướng dẫn fill dữ liệu từ winform vào Microsoft word
- [VB.NET] Hướng dẫn chọn nhiều dòng trên Datagridview
- Hướng Dẫn Đăng Nhập Nhiều Tài Khoản Zalo Trên Máy Tính Cực Kỳ Đơn Giản
- [C#] Chia sẻ source code phần mềm đếm số trang tập tin file PDF
- [C#] Cách Sử Dụng DeviceId trong C# Để Tạo Khóa Cho Ứng Dụng
- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [C#] Hướng dẫn download file từ Minio Server Winform
[C#] Hướng dẫn sử dụng Api v3 google để đăng bài tự động lên blogger, blogspot
Ở bài viết hôm trước, mình có viết một tutorial hướng dẫn các bạn cách đăng bài tự động lên trang web sử dụng CMS Wordpress, tiếp tục ở bài viết này mình sẽ chỉ cho các bạn sử dụng Api version 3 của google, để tự động post bài viết lên trang web blogger (blogspot) của google một cách dễ dàng.

Nếu như các bạn nào thường xuyên sử dụng blogger của google để làm site vệ tinh cho website của mình, thì công việc thường xuyên post bài lên blogger rất là thủ công và mất nhiều thời gian.
Giả sử, nếu chúng ta làm SEO và sử dụng 20 trang blogger để làm Seo cho website chính của mình, thì công việc đăng bài như vậy, sẽ mất rất nhiều thời gian.
Để sử dụng Api version 3 của google, đầu tiên các bạn tạo một solution.
- Tiếp đến, mình sẽ sử dụng Nuget để cài đặt API v3 của blogger về để sử dụng. Nếu các bạn nào, chưa biết sử dụng Nuget thì có thể tìm hiểu thêm trên mạng nhé.
- Google API version 3 sử dụng Auth 2.0 để xác thực tài khoản, chính vì vậy, các bạn có thể tạo một ứng dụng trên google, để lấy key API, client id và client secret.
Các bạn có thể tham khảo video bên dưới
Dưới đây là source code tự động đăng bài lên blogspot.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.IO;
using Newtonsoft.Json;
namespace Blogger
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/blogger&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&client_id=client-id");
        }
        private string HTTPPost(string url, string postparams)
        {
            string responseString = "";
            // performs the desired http post request for the url and parameters
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            // request.CookieContainer = Cookie; // explicitely use the cookiecontainer to save the session
            string postData = postparams;
            byte[] data = Encoding.UTF8.GetBytes(postData);
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = data.Length;
            using (var stream = request.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
            }
            var response = (HttpWebResponse)request.GetResponse();
            responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
            return responseString;
        }
        private void Form1_Click(object sender, EventArgs e)
        {
            string Code = "code=" + textBox1.Text + "&";
            string ID = "client_id=client-id&";
            string uri = "redirect_uri=urn:ietf:wg:oauth:2.0:oob&";
            string grant = "grant_type=authorization_code&";
            string secret = "client_secret=secret";
            string Code2 = HTTPPost("https://www.googleapis.com/oauth2/v3/token", Code + ID + uri + grant + secret);
            AccessToken JsonAccToken = (AccessToken)JsonConvert.DeserializeObject(Code2, typeof(AccessToken));
            string StrAccToken = JsonAccToken.access_token;
            JSONPublish(BlogID, "Tự động đăng bài lên Blogger sử dụng Csharp", "Xin chào, anh Thảo Meo  - http://laptrinhvb.net.", StrAccToken);
        }
        private void JSONPublish(string sid, string stitle, string scontent, string token)
        {
            var http = (HttpWebRequest)WebRequest.Create(new Uri("https://www.googleapis.com/blogger/v3/blogs/" + sid + "/posts/"));
            http.Accept = "application/json";
            http.ContentType = "application/json";
            http.Method = "POST";
            http.Headers.Add("Authorization", "Bearer " + token);
            var vm = new { kind = "blogger#post", blog = new { id = sid }, title = stitle, content = scontent };
            var dataString = JsonConvert.SerializeObject(vm);
            string parsedContent = dataString;
            Byte[] bytes = Encoding.UTF8.GetBytes(parsedContent);
            Stream newStream = http.GetRequestStream();
            newStream.Write(bytes, 0, bytes.Length);
            newStream.Close();
            var response = http.GetResponse();
            var stream = response.GetResponseStream();
            var sr = new StreamReader(stream);
            var content = sr.ReadToEnd();
        }
        public class AccessToken
        {
            [JsonProperty(PropertyName = "access_token")]
            public string access_token { get; set; }
        }
    }
}P/s: lưu ý, post bài ở đoạn code trên các bạn cần phải lấy ID của blog của bạn để paste và đoạn code trên nhé.
CHÚC CÁC BẠN THÀNH CÔNG!

![[C#] Hướng dẫn sử dụng Api v3 google để đăng bài tự động lên blogger, blogspot](https://laptrinhvb.net/uploads/users/9a8cb514e4428e85fb4ca07588e9103f.png)

![[C#] Selemium Tự động đăng nhập gmail bằng Chrome Driver](https://laptrinhvb.net/uploads/source/image_baiviet/e80088217f18260e628fb7455cad5d09.jpg)
![[C#] Hướng dẫn khóa màn hình desktop screen lock winform](https://laptrinhvb.net/uploads/source/csharp/lock_screen_csharp.png)
![[C#] Tự động cập nhật phần mềm khi có phiên bản mới trong lập trình Winform](https://laptrinhvb.net/uploads/source/csharp/auto_update_thumb.png)
![[C#] Giới thiệu thư viện Sunny UI thiết kế giao diện trên Winform](https://laptrinhvb.net/uploads/source/sunny_ui/sunny_ui1.gif)
![[C#] Bắt lỗi sự kiện control sử dụng Error Provider trong lập trình csharp](https://laptrinhvb.net/uploads/source/image_baiviet/d84a548957738f58401d868f330ccb8c.gif)
![[C#] Hướng dẫn tạo menu trên Console App](https://laptrinhvb.net/uploads/source/new_image_baiviet/menu_console_csharp.gif)
![[C#] Hướng dẫn tạo Form Đăng nhập kết nối cơ sở dữ liệu Sql server winform](https://laptrinhvb.net/uploads/source/vbnet/login_form_csharp.png)
![[C#] Mở hộp thoại Property Dialog File  Win32 trong Windows](https://laptrinhvb.net/uploads/source/csharp/property_dialog_file_thumb.png)
![[C#] Backup database sqlsever with progress sử dụng thư viện Sql SMO](https://laptrinhvb.net/uploads/source/image_baiviet/cfef35ccbc5d9ec9124e82482451736e.jpg)
![[C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform](https://laptrinhvb.net/uploads/source/new_image_baiviet/momo_danang.png)
![[C#] Hướng dẫn thêm, lưu, xóa, sửa, tìm kiếm trên SQLSERVER CE (SQL COMPACT)](https://laptrinhvb.net/uploads/source/image_baiviet/9695e729194410d52eb4a1e8234e9e0c.jpg)
![[C#] Hướng dẫn lập trình gởi tin nhắn zalo sử dụng api](https://laptrinhvb.net/uploads/source/csharp/zalo_messager_thumb.jpg)
![[C#] Hướng dẫn Khóa và mở khóa Folder](https://laptrinhvb.net/uploads/source/vbnet/LOCK_FOLDER_THUMB.png)
![[C#] Hướng dẫn đọc gmail sử dụng Gmail API lập trình Csharp](https://laptrinhvb.net/uploads/source/image_baiviet/5464ba09477a626d1ac456291143e5ed.png)
![[C#] Hướng dẫn đọc, ghi file nhị phân trong lập trình csharp](https://laptrinhvb.net/uploads/source/csharp/binary_file_thumb.jpg)
![[C#]  Quản lý dịch vụ Windows Services trên Csharp Winform](https://laptrinhvb.net/uploads/source/new_image_baiviet/windows_services.jpg)
![[C#] Bắt sự kiện thay đổi clipboard windows](https://laptrinhvb.net/uploads/source/csharp/clipboard_thumb.jpg)

![[C#] Hướng dẫn Overlay Icon dưới Taskbar của ứng dụng - lap trinh csharp](https://laptrinhvb.net/uploads/source/image_baiviet/0ed99f089b242555e56f6b8ae748c1bb.gif)
![[C#] Hướng dẫn chuyển đổi số int sang dạng text giống column name trên Excel](https://laptrinhvb.net/uploads/source/new_image_baiviet/col_name_excel.jpg)
![[C#] Chia sẽ class Install, Uninstall, Start và Stop Services Winform](https://laptrinhvb.net/uploads/source/vbnet/install_services_thumb.png)
![[C#] Viết ứng dụng Chat Client với RabbitMQ](https://laptrinhvb.net/uploads/source/csharp/chat_rabbit_mq_csharp_thumb.png)
![[C#] Chia sẽ source code phần mềm import dữ liệu từ Excel vào Database Sqlserver](https://laptrinhvb.net/uploads/source/DATABASE/Excel2SQL_thumb.png)
![[C#] Hướng dẫn thêm cookie vào Http Request website](https://laptrinhvb.net/uploads/source/image_baiviet/fa5037db1a223b7275bad44d9b7950f5.jpg)
![[C#] Hướng dẫn download video Youtube trong lap trinh csharp](https://laptrinhvb.net/uploads/source/image_baiviet/05782e95ff7f6b2528efcf60c691985c.png)
