Social Network APIs: Kết nối Internet đến thế giới thật

5765
Social network APIs giúp bạn hiểu khách hàng có khi còn rõ hơn… họ hiểu bản thân mình.

Kể từ phiên bản Youtube APi đầu tiên của Youtube hồi tháng 5 năm 2008 và Graph API của Facebook hồi tháng 4 năm 2010. Đến nay, những API này đã có thể cho chúng ta khả năng truy vấn post, user, channel, và dữ liệu nhân khẩu học từ nhiều social network platform khác nhau. những API này còn cho phép bạn tự tạo dịch vụ riêng, hay tìm hiểu thêm về user base của mình.

Trong bài viết này, chúng ta sẽ khám phá cách tận dụng hiệu quả nhất của một số social network APIs nổi tiếng sau:

  • Facebook (Graph and Marketing API)
  • Instagram
  • Twitter
  • YouTube
  • Pinterest

Chúng ta cũng sẽ bàn về hạn chế của mỗi APIs, và tìm hiểu một số công cụ hữu ích đi chung với những APIs này. Cuối bài biết, chúng tôi cũng sẽ nói qua cách tích hợp API vào bất kỳ ứng dụng Rails nào.

Để sử dụng APIs, trước hết, bạn cần setup một app giúp tạo truy vấn với tư cách ứng dụng của bạn, với OAuth based requests. User sẽ xác minh với ứng dụng và bạn có thể truy cập dữ liệu với user access-token có được.

Facebook

FQL (Facebook Query Language) hiện đã lỗi thời, từng là một kiểu ngôn ngữ truy vấn giống SQL, có thể được sử dụng để truy cập tất cả dữ liệu từ facebook.

Hiện nay, phiên bản mới nhất của Graph API 2.6, được giới thiệu ngày 12 tháng tư năm 2016. Đây là một API gốc HTTP cấp thấp có thể truy vấn data, tạo post, hay thậm chí là các chiến dịch quảng cáo tự động.

Công cụ

Khi làm việc với Facebook API, Graph API Explorer hiện là một trong những công cụ phổ biến nhất. Graph API Explorer cho phép bạn thực thi truy vấn Graph API trên trình duyệt và xem xét kết quả: bạn có thể sử dụng access token của ứng dụng, hoặc tiện tay tạo một access token mới với những scopes được lựa chọn.

Khả năng

Graph API là một API gốc REST cho phép bạn tạo, cập nhật, và xóa objects mỗi HTTP trên các node nhất định.

Access Token

Để chạy truy vấn trên Graph API, bạn cần có access token với mỗi lần user ủy quyền thành công vào ứng dụng. Access token cần được ứng dụng của bạn lưu trữ.

Scopes

Scopes xác định các hành động có thể được thực hiện với tư cách một user. Ứng dụng sẽ yêu cầu scopes nhất định khi một user ủy quyền trong ứng dụng. Ví dụ như, scope publish_actions, cho phép ứng dụng publish post với tư cách của user đó. Email scope cho phép ứng dụng đọc email của user. Trong tài liệu chính thức, bạn có thể tìm thêm thông tin về tất cả scope trong Graph API.

Một vài scopes nhất định như publish_actions hay ads_management cần phải được Facebook review trước khi ứng dụng có thể được release.

Ví dụ

Để giải thích cách hoạt động của Graph API, tôi sẽ chỉ các bạn cách đọc, tạo mới, cập nhật, và xóa post với API.

Để thấy post của chính mình, bạn có thể thực thi truy vấn GET /me/posts. Kết quả sẽ là một chuỗi JSON với danh sách các post, cao gồm massage, created_time, và id tương ứng.

Để có thêm dữ liệu về bài post, bạn có thể mở rộng truy vấn với các trường (tham số truy vấn). Ví dụ, truy vấn me/posts?fields=reactions, picture sẽ cho bạn toàn cảnh và phản ứng về post.

Để tạo một post mới, bạn chỉ việc gửi một POST action lên edge feed, như me/feed, với các tham số như message: hello world. Graph API sẽ trả object JSON với ID của bài post vừa được tạo. Sau đó, bạn có thể xem bài post tại địa chỉ http://facebook.com/[post_id].

Để cập nhật post, bạn có thể gửi POST request đến node của post đó, với các trường cần cập nhật (dưới dạng tham số): như /[post_id] và các params như Message: lorem ipsum. Ta sẽ nhận kết quả thành công hay thất bại, với giá trị true hoặc flase.

Để delete một post, bạn chỉ việt thực hiện request DELETE đến node có post ID (như /[post_id]). Ta sẽ nhận kết quả là JSON object, với giá trị true hoặc false.

Bạn có thể xem tổng kết thông tin của tất cả nodes và actions trong Graph API Reference.

Marketing API

Marketing API cũng là một công cụ mạnh mẽ giúp quản lý Facebook ads và tìm hiểu thêm và khả năng hoạt động của những ad này.

marketing API làm việc tương tự như các method khác trong Graph API. Tuy nhiên, bạn cần scope ads_management để truy cập vào ads của user. Facebook cũng sẽ phải review ứng dụng trước khi publish.

Testing

Khi đã tạo ứng dụng, ứng dụng sẽ ở development mode và tự động hiển thị trong app dashboard (như https://developers.facebook.com/apps/).

Trong development mode, chỉ có admin, dev, và tester có quyền truy cập vào app. Bạn có thể thêm tester và admin trong phần roles của app dashboard.

Quá trình review

Khi thêm một permission nhất định, Facebook cần phải review ứng dụng trước khi publish. Quá trình review tuân thủ theo nguyên tắc định sẵn.

Để đăng ký review, bạn chỉ việc thêm đối tượng cần review, bạn chỉ việc thêm đối tượng vào App Review section của app dashboard. Sau đó, Facebook sẽ hướng dẫn thêm chi tiết về quá trình review, và thông báo cho bạn ngay sau khi ứng dụng được thông qua.

Hạn chế và cách giải quyết

Rate Limits

Một app có thể thực hiện tổng cộng 200 call mỗi giờ, trên mỗi user. Nếu bạn đạt con số giới hạn này, API call sẽ cho ra error.

Tìm Post trên Facebook

Facebook giới hạn tìm kiến post và tag trên trang của mình thông qua Graph API và FQL. Tuy nhiên, bạn có thể sử dụng Google Search API để tìm posts Facebook (công khai) và dùng post-id trong URL để nhận thông tin về các post nhất định, thông qua Graph API.

Lấy Custom Audience Data

Audience Insights là một công cụ nghiên cứu mạnh mẽ trên Facebook. Thông qua công cụ, bạn có thể hiểu thêm về user với các thông tin nhân khẩu học, mối quan tâm, và các thông số khác (như địa chỉ email,…)

Tuy nhiên, có vẻ như, ta vẫn chưa có cách tạo audience insights tự động thông qua ad API. Nếu bạn có phương pháp sáng tạo nào đó có thể thực hiện công việc này, hay chia sẻ cho mọi người biết nhé.

Instagram

Instagram API, lần đầu ra mắt vào tháng tư năm 2014, cho phép bạn xây dựng ứng dụng giúp phân tích post của user và giúp user tự quản lý post của mình.

Công cụ

Vì API console của Instagram hiện đã quá lỗi thời, tôi đề nghị sử dụng Apigee để test trong trình duyệt.

Khẳ năng

Instagram API là API gốc REST. Mọi endpoints của Instagram API đều được miêu tả trong tài liệu chính thức.

Access Token

Để chạy truy vấn với Instagram API, bạn cần access token (có được khi user ủy quyền trong ứng dụng). Để user nhận được access token, họ cần được chuyển hướng đến URL ủy quyền của ứng dụng. Sau đó, server sẽ tái chuyển hướng user sau khi ủy quyền app, và từ đó bạn có thể đọc được token.

Scopes

Bạn có thể yêu cầu nhiều quyền hạn khác nhau. Ví dụ, “basic” giới hạn bạn chỉ đọc được thông tin profile và media của user. “public_content” cho phép bạn đọc bất cứ profile và media công khai nào với tư cách user.

Ví dụ

Để giải thích cách làm việc của Instagram API, tôi sẽ phân tích một số ví dụ dựa trên media endpoint.

https://api.instagram.com/v1/media/popular.

Endpoint này sẽ trả kết quả là media đang nổi trên Instagram nếu có thông qua một access token (dưới dạng tham số). Kết quả sẽ là JSON array của các post, mỗi post có chứa media ID, hình ảnh, like, comment của post đó, user nào post media đó, và nhiều thông số khác.

Bạn có thể sử dụng apigee để thử nghiệm và tìm hiểu thêm về API endpoints cùng các thông số tương ứng.

Testing

Ứng dụng được tạo trên nền Instagram sẽ bắt đầu ở sandbox mode. Đây là môi trường đầy đủ chức năng, cho phép bạn test API endpoints sẵn có một cách công khai, trước khi đăng ký review ứng dụng.

Để test ứng dụng, chỉ việc tạo staging version và chạy tất cả truy vấn qua version đó, thay vì chạy trên live version đã thông qua review.

Quá trình Review

Ứng dụng ở sandbox mode có thể sử dụng bất kỳ API endpoint nào, nhưng bị giới hạn ở lượng user và media nhất định. Đây là cơ chế phát triển và test app rất hay.

Để phát hành ứng dụng và truy cập mọi Instagram content, bạn sẽ phải đăng ký review ứng dụng. Khi đã được review, bạn sẽ chỉ có thể request các scope được thông qua trong ứng dụng.

Hạn chế và cách giải quyết

Phân tích nhân khẩu học

Tại thời điểm viết bài, ta vẫn chưa thể nhận được thông tin về tuổi, gới tính, sở thích của public user, vì Instagram không cung cấp những thông tin này.

Để có dữ liệu nhân khẩu học của followers hay một loạt Instagram user, bạn sẽ phải lần lượt xem qua profile của tất cả mọi người để xác định tuổi tác, giới tính, dựa trên follower hoặc thông tin bio của user đó.

Một số dịch vụ giải pháp dữ liệu có thể là lời giải cho vấn đề này.

Rate Limits

Tất cả rate limits trên nền Instagram được điều khiển bởi access token trên sliding 1-hour window. Ứng dụng live có rate limits cao hơn ứng dụng ở Sandbox mode. Lượng rate limit cho live app hiện dao động ở mức 5000 call mỗi giờ.

Twitter

Twitter API lần đầu ra mắt vào tháng chín năm 2006. Đây là public REST API giúp cung cấp quyền đọc và viết đến Twitter data. Việc xác minh được thực hiện bằng OAuth. Phản hồi định dạng JSON.

Công cụ

Twitter có API console tool (được xây dựng trên nền apigee), có thể được sử dụng để test requests trong browser.

Khẳ năng

REST API cho phép bạn nhận kết quả tweet, follower và người đã follow của một user. Bạn cũng có thể tìm hashtag trong những tweet khác.

Access Token

Twitter cho phép bạn tạo ứng dụng, mà user có thể xác minh để có được access token. Mô hình xác minh là OAuth.

Scopes

Trên setting page của app, chỉ chần thiết đặt hai quyền hạn:Read only và Read & Write. Quyền R&W cho phép bạn tạo tweets và thực hiện các thao tác khác với tư cách user.

Ví dụ

Để giải thích cách sử dụng của Twitter API, tôi sẽ tìm các tweet đã ủy quyền của user. Kết quả là JSON array kèm theo hình ảnh, lượt thích, lượt retweet, url, ngày tạo,… của tweet. Bạn có thể thử nghiệm với Apigee để hiểu thêm về endpoint và các tham số của API.

Qucs trình Testing và Review

Hiện không có bất cứ khâu review hay test mode nào cho Twitter API.

Hạn chế và cách giải quyết

Phân tích nhân khẩu học

Ta vẫn chưa thể dễ dàng thu thập dữ liệu nhân khẩu học từ Twitter follower của ai đó được. Cách “đâu khổ” nhất là chịu khó lùng sục ngồi lọc và phân tích từng tài khoản một.

Bạn có thể phán đoán dựa trên follower data tổng hợp từ data analysis. Còn một cách tìm hiểu insight khác là thông qua enterprise API platform GNIP trả phí của Twitter. Hơn nữa, GNIP cho phép bạn tạo audience và nhận thông tin về những audience đó. API này hiện đang trong giai đoạn BETA.

Rate Limits

Twitter có rate limits cho mỗi user, trong mỗi 15 phút. Nếu ứng dụng của bạn có nhiều tokens, bạn chỉ việc chỉnh sửa những token cho public operation để tránh phạm giới hạn.

YouTube

YouTube Data API được giới thiệu vào tháng một năm 2013. API cho phép bạn thêm các tính năng Youtube vào ứng dụng, tìm content, và phân tích dữ liệu nhân khẩu học của kênh Youtube. API này là REST API gốc token, OAuth, và trả kết quả JSON.

Tools

API Explorer giúp bạn test các request được và không được ủy quyền. Bạn có thể chạy request từ trình duyệt với các endpoints có sẵn.

Khẳ năng

Đặc biệt, bạn có thể làm việc với activities, chat, live broadcast, playlist, channel, video, và subscription. Đa số endpoint yêu cầu bạn phải ủy quyền bằng tài khoản Youtube.

Access Token

YouTube Data API có hỗ trợ quy ước OAuth 2.0 để ủy quyền truy cập đến user data cá nhân. Khi user đã được cấp quyền trong ứng dụng, họ sẽ được chuyển hướng đến nơi lưu access token trên ứng dụng.

Để sử dụng quy ước QAuth 2.0, đầu tiền bạn cần phải nhận chứng nhận ủy quyền trong Google developer console.

Scopes

YouTube Data API hiện đang hỗ trợ những scope sau:

  • Force SSL – Quản lý tài khoản youtube của bạn, nhưng chỉ trên kết nối SSL.
  • Default – Quản lý tài khoản youtube của bạn. Scope này hoạt động giống với scope youtube.force-ssl , nhưng không yêu cầu kết nối SSL.
  • Read Only – Xem tài khoản YouTube.
  • Upload – Upload và quản lý YouTube video.
  • Partner Channel Audit – Nhận thông tin do Multichannel Networks sử dụng để chấp nhận hoặc từ chối channel trên network của họ.

Ví dụ

Các truy vấn request sau cho video với “coding” trong tiêu đề và description:

https://www.googleapis.com/youtube/v3/search?part=snippet&q=coding&key={YOUR_API_KEY}

Kết quả là JSON object chứa title, description, videoid, và channelid. Bạn có thể sử dụng channelid để tìm hiểu thêm về channel.

Tham số ‘part’ là bắt cuộc cho bất cứ API request nào (có trả kết quả tài nguyên nhất định). Tham số xác định tính chất của tài nguyên (cần được thêm vào trong phản hồi API). Ví dụ, tài nguyên video sẽ gồm những phần sau: snippet, contentDetails, fileDetails, player, processingDetails, recordingDetails, statistics, status, suggestions, topicDetails.

Tất cả tham số khác, ngoại trừ API key, có sự khác biệt giữa các call. Bạn có thể tìm hiểu thêm về YouTube Data API tại đây.

Pinterest

Pinterest API lần đầu ra mắt năm tháng 4 năm 2015. Đây là một RESTful API cho phép truy cập Pinterest data của user, như board, bin, follower,… Pinterest API sử dụng OAuth và cho phép cả khả năng đọc và viết khi tương tác với nội dung của user.

Công cụ

Giống với những công ty khác, Pinterest cũng cung cấp API Explorer để test end point và chạy truy vấn lên đó. Bạn có thể xem qua những cộng cụ đó ở đây.

Khẳ năng

Pinterest REST API cho phép bạn tạo pin, board và truy vấn Pinterest data với OAuth.

Access Token

Pinterest sử dụng OAuth 2.0 để xác nhận request giữa ứng dụng và người dùng của bạn. Tất cả request phải được thực hiện trên HTTPS.

Scopes

Scopes xác định ứng dụng có thể làm gì (với tư cách user). Pinterest sử dụng những scopes sau:

  • none (phải biết identifier): Sử dụng GET method trên profile, board và pin của một user, và các pins trên một board.
  • read_public: Dùng GET method trên Pins, boards và likes của user.
  • write_public: dùng các method PATCH, POST, và DELETE lên pins và boards của user.
  • read_relationships: dùng method GET lên lượt follows và followers của user.
  • write_relationships: dùng method PATCH, POST, và DELETE lên lượt follows và followers của user.

Ví dụ

Để minh họa cách sử dụng của Pinterest API, ta hãy xem thử cách đọc pins mới nhất của user:

https://api.pinterest.com/v1/me/pins/?access_token={your_token}&fields=id,link,note,url,counts,board,created_at

Địa chỉ sẽ cho kết quả pin của user với id, link, note, url, likes và repins.

Quá trình Testing và Review

Ứng dụng mới đầu sẻ ở development mode và phải được review trước khi bước vào production mode.

Hạn chế và cách giải quyết

Phân tích nhân khẩu học

Hiện ngoài phương pháp thủ công, ta vẫn chưa thể thu thập dữ liệu nhân khẩu học từ board được. Một số BDS (big data solution) trên các kết nối thông thường của user cũng có thể phần nào đóng góp một chút.

Tìm Pins

Hiện nay, vẫn chưa có cách tìm pins với tags hay ketwords nhất định thông qua API. Bạn có thể xóa bỏ giới hạn này bằng cách sử dụng Google Custom Search API, để tìm kết quả chỉ trên Pinterest pins và thu thập pin ID thông qua URL. Sau đó, ta có thể dùng ID để nhận thông tin về pin thông qua API.

Rate Limits

Mỗi ứng dụng (với unique app ID) được cho phép 1.000 call/endpoint/tiếng đồng hồ/unique user token.

Mỗi phản hồi API sẽ cho ra một header cập nhật thông tin về rate limit. X-Ratelimit-Limit là rate limit cụ thể cho request đó, và X-Ratelimit-Remaining là số requeset bạn còn lại trong khoảng thời gian 60 phút.

Nếu bạn vượt quá rate limit cho một endpoint cho trước, bạn sẽ thấy error code 429 “Too many requests”.

So sánh các Social Network APIs

 

Version OAuth Format Demographics
Facebook v2.6

Initial Release: April 2010

OAuth 2 REST requests with JSON responses Supported
Instagram v1

Initial Release: April 2014

OAuth 2 REST requests with JSON responses Not supported
Twitter v1.1

Initial Release: September 2006

OAuth 1 REST requests with JSON responses Only supported with GNIP
YouTube v3

Initial Release: January 2013

OAuth 2 REST requests with JSON responses Supported
Pinterest v1

Initial Release: April 2015

OAuth 2 REST requests with JSON responses Not Supported

Ứng dụng Demo với Devise

Nhờ vào nhiều lựa chọn packages và libraries cho social network API, việc tích hợp những APIs sẵn có này vào ứng dụng của bạn trở nên dễ dàng hơn bao giờ hết. Đa phần platform và framework hiện nay có nhiều thư viện bên thứ ba, thậm chí còn có thể kết hợp tất cả vấn đề xác minh của những API này thành một thư viện duy nhất với cấu trúc plugin gọn nhẹ.

Với bài viết này, chúng ta sẽ xét đến Devise (Ruby gem). Devise là thư viện xác minh linh hoạt dựa trên Warden, giúp thực thi xác minh, đăng ký, login và lưu trữ data cho nhiều login providers.

Devise, cũng như đa số thư viện trong class này, không có hỗ trợ sẵn social network APIs đã nêu trên.  Bạn cần thêm gem đễ hỗ trợ những API này. Những gem sau có trong Rails authentication sẽ hỗ trợ 5 nhà cung cấp:

Một trong những điều hay nhất về Rails là, hiện có rất nhiều plugin của cộng đồng open source, được phát hành dưới dạng gem. Những gem này được quản lý bởi Bundle, được liệt kêt dưới một file configuration duy nhất.

Vì những gem này chỉ cung cấp khả năng xác nhận, đăng ký, login, và lưu trữ cho mỗi nhà cung cấp, chúng ta sẽ cần thêm gem cho API client thực sực:

Omniauth và Authentication

Đế người dùng có thể ủy quyền ứng dụng với nhà cung cấp, bạn chỉ việc thêm đường link với đường dẫn sau:

Sau khi xác minh user, để phản ứng với callback, bạn có thể xác định OmniauthCallbacksController với scopes (làm fuctions) như:

Đó là chỗ cần thêm mô hình xác minh mới, với token và data vào ứng dụng:

Thực hiện API Calls

Sau đây là ví dụ cách dùng Koala để truy vấn Facebook API. Những nhà cung cấp còn lại làm việc ít nhiều tương đồng, và được document trong file README của gem.

Đây là cách bạn khiến user sử dụng Koala:

Sau đó, bạn có thể sử dụng kết quả JSON từ API. Ban có thể tìm được source code của ứng dụng demo này trên GitHub.

Lời kết

Social network APIs mang đến cho bạn một công cụ mạnh mẽ để truy vấn nhiều bộ dữ liệu từ mạng xã hội, cũng như thu thập dữ liệu cho ứng dụng của mình. Bạn cũng có thể tự xây dựng dịch vụ mới dựa trên những API này hoặc trực tiếp sử dụng chúng luôn để cải thiện ứng dụng và hiểu rõ người dùng hơn.

Rails và nhiều gem hữu ích tạo điều kiện hết mức để giúp bạn tích hợp những APIs này vào ứng dụng rail của mình, và truy vấn giao diện với abstraction layer (lớp trừu tượng) giữa ứng dụng và API.

Techtalk via toptal

CHIA SẺ