Thứ Ba, 24 tháng 9, 2019

Blog tích hợp vào trang web ASP.NET bằng API GData

Đăng Bởi: Admin - tháng 9 24, 2019 - 0 Bình Luận

Blog tích hợp vào trang web ASP.NET bằng API GData





Quản lý nội dung của trang web asp.net bằng Blog Blogger và API GDI của Google

Giới thiệu

Nhiều trang web cho các cá nhân và công ty bao gồm hầu hết các trang tĩnh nhưng đôi khi cần cung cấp thông tin cập nhật cho khách hàng hoặc thông tin về tin tức của công ty. Hầu hết các trang web này sẽ yêu cầu cập nhật mã thực tế để xuất bản các mục tin tức hoặc cập nhật này. Đối với các công ty nhỏ hơn, một cách năng động để duy trì các trang này có thể được tích hợp vào trang blog trong đó nội dung của blog sẽ tự động được kéo vào trang cần cập nhật. Điều này cung cấp một cách để quản lý nội dung trên các trang này mà không cần chạm vào mã trên trang web hoặc thực hiện triển khai. Một bản cập nhật cho blog được phản ánh trực tiếp vào trang đích. Bài viết này cung cấp một triển khai như vậy của tính năng này bằng cách sử dụng trang web blogger và trang web ASP.NET. Ở đâu đó trên trang web này tích hợp blog vào ASP.NET blogger được thảo luận với giải pháp FTP, nhưng tính năng này đang được loại bỏ. Giải pháp của tôi liên quan đến việc sử dụng API dịch vụ GData từ Google để truy vấn blog kết nối nhanh chóng và hiển thị chúng trong trang web ASP.NET của bạn, mặc dù không có lý do nào khiến nó không thể được sử dụng trong các loại trang web khác.

Xung quanh

Các Incede.BloggerInteg.dll được viết bằng C # 3.5 và các trang web mẫu được thiết kế trong VS2008. Nó có thể dễ dàng nâng cấp lên VS2010.

Sử dụng mã

Dự án được triển khai dưới dạng DLL tùy chỉnh ( Incede.BloggerInteg.dll ), Thành phần này có BlogServicelớp với phương thức công khai GetUserBlogs()trả về danh sách các blog được xuất bản trên trang blogger được chỉ định.
Hàm tạo của BlogServicelớp dịch vụ lấy tên blog, id người dùng, mật khẩu của blog làm đối số. Cũng bao gồm trong hàm tạo là số lượng mục blog cần kéo. Cốt lõi của thành phần là hai API của Google để truy cập vào hệ thống blogger.
  • Google.GData.Blogger
  • Google.GData.Client
Các thành phần này cung cấp dịch vụ cần thiết xác thực trực tuyến vào nền tảng blogger và khả năng truy vấn blog của người dùng. Đầu GetUserBlogstiên tạo một phiên bản của thông tin đăng nhập dịch vụ bằng Google GDataCredentialsvà dịch vụ sẽ nhận các mục blog bằng GDATA và URI Blog.
public List<blogentry> GetUserBlogs()
{
    if (blogname.Trim().Equals(String.Empty))
        blogname = "incedeit.blogspot.com";//default if not supplied
    if (numberOfEntries <= 0)
        numberOfEntries = 10; //default

    var gService = new Google.GData.Client.Service("blogger", blogname);
    gService.Credentials = new GDataCredentials(username, password);

    Uri blogPostUri = SelectUserBlog(gService, blogname)
    List<blogentry> blogs = GetBlogEntryContent(gService, 
    blogPostUri,   numberOfEntries);
    return blogs;
}
Đây là phương pháp mà cốt lõi của quá trình xác định blog người dùng được thực hiện. Một nguồn cấp dữ liệu đầu tiên được tạo từ truy vấn và sau đó các mục được lọc xuống blog người dùng. Blog người dùng này được xác định bởi một URI tĩnh.
static Uri SelectUserBlog(Service service, string blogname)
{
    //blogname = incedeit.blogspot.com example 
    FeedQuery query = new FeedQuery();
    // Retrieving a list of blogs
    query.Uri = new Uri("http://www.blogger.com/feeds/default/blogs");
    AtomFeed feed = service.Query(query);

    // Publishing a blog post
    Uri blogPostUri = null;
    if (feed != null)
    {
        foreach (AtomEntry entry in feed.Entries)
        {
            //iterate thru blogs 

            if (entry.AlternateUri.Content.Contains(blogname))
            {
                // find the href in the link with a rel pointing to the blog's feed
                for (int i = 0; i < entry.Links.Count; i++)
                {
                    if (entry.Links[i].Rel.Equals("http://schemas.google.com/g/2005#post"))
                    {
                        blogPostUri = new Uri(entry.Links[i].HRef.ToString());
                    }
                }

                return blogPostUri;
            }
        }
    }
    return blogPostUri;
}
Phương pháp này cuối cùng lặp lại thông qua các mục của URI blog người dùng đã xác định và lấy nội dung có liên quan từ blog như tiêu đề, nội dung và chân trang.
static List<blogentry> GetBlogEntryContent(Service service, Uri blogUri, int numberOfEntries)
{
    List<blogentry> allblogs = new List<blogentry>();
    if (blogUri != null)
    {

        // Retrieve all posts in a blog
        FeedQuery query = new FeedQuery();
        query.Uri = blogUri;
        query.NumberToRetrieve = numberOfEntries; //get last x number of posts
        AtomFeed feed = service.Query(query);
        foreach (AtomEntry entry in feed.Entries)
        {
            BlogEntry b = new BlogEntry();
            b.Title = entry.Title.Text;
            b.content = entry.Content.Content;
            b.footer = String.Format("Posted on {0}", entry.Published.ToString());
            allblogs.Add(b);
        }
    }
    return allblogs;
}

Sử dụng

Để sử dụng thành phần, chúng tôi chỉ cần tạo một phiên bản của dịch vụ Incede.BloggerInteg.BlogServicevà cung cấp cho nó một vài tham số, ví dụ như blogname, thông tin đăng nhập và số lượng mục blog chúng tôi quan tâm. Các tham số này được xác định trong web.config trong dự án mẫu của chúng tôi. Dịch vụ trả về một IListlớp mục nhập blog với các thuộc tính như tiêu đề Blog, Nội dung Blog và footer.ShowBlogEntrieschỉ cần định dạng các mục blog vào danh sách dữ liệu để hiển thị.
Incede.BloggerInteg.BlogService Biservicc = new Incede.BloggerInteg.BlogService(blogname, userid,pwd,int.Parse(entries));
 
List<incede.bloggerinteg.blogentry> blogs =   Biservicc.GetUserBlogs();
ShowBlogEntries(blogs, blogname);

Đặt nó lại với nhau

  1. Thư mục bin nên chứa các DLL hỗ trợ sau:
    • Google.GData.Blogger.dll
    • Google.GData.Client.dll
  2. Bạn web.config nên có các mục sau cho URL tới trang blog và thông tin đăng nhập:
    • blogName
    • blogUserid
    • blogPass
    • Số Entries
  3. Bạn có thể sửa đổi dịch vụ cốt lõi để trả về các tham số bổ sung từ trang blogger nếu cần. Việc thực hiện của tôi có các mục cơ bản nhất sẽ cần thiết. 

Dự án mẫu 

Tôi đã sử dụng một blog mẫu mà tôi đã tạo cho dự án này để minh họa khái niệm trong dự án mẫu. Trang blog thực tế là http://incedeblogger.blogspot.com. Mọi cập nhật cho blog sẽ tự động được kéo xuống trang web của dự án mẫu. Có thể thực hiện trực tiếp việc này trong hành động trên trang web của tôi http://www.incedeit.com/main/UI/News.aspx .
Ảnh chụp màn hình của trang tích hợp: 
Hình 1 

Lịch sử

Phản Hồi Độc Giả

Một số lưu ý khi bình luận

Mọi bình luận sai nội quy sẽ bị xóa mà không cần báo trước (xem nội quy)

Bấm Thông báo cho tôi bên dưới khung bình luận để nhận thông báo khi admin trả lời

Để bình luận một đoạn code, hãy mã hóa code trước nhé