30/09/2018, 23:24

App Facebook api

Em vừa vào thử việc tại một công ty bán hàng online. Em đảm nhận vị trí lập trình, cả công ty chỉ có mình em lập trình thôi ạ.
Công ty có trang facebook, cứ mỗi lần đăng sản phẩm lên trang facebook của công ty thì sẽ có người like và comment. Giám đốc yêu cầu em viết ứng dụng trên nền web để tự động lấy hết được các thông tin mà những người đã like và comment sản phẩm của cty. Anh chị có cái hướng nào hay là sử dụng api facebook nào cho việc viết ứng dụng kiểu này không chỉ em với ạ, em chưa làm kiểu này bao giờ mà sắp đến hạn nạp ứng dụng rồi. Công ty dùng asp.net mvc5

ACP viết 01:26 ngày 01/10/2018

.net (back-end) hay jquery (front-end) cũng chỉ khác cách gọi vào Facebook API thôi. Hướng đi chính là như vầy:
(Để sử dụng được api thì phải đăng kí trở thành developer nhé, đây phải là tài khoản dùng để đăng sản phẩm luôn)

1/ Get post id: id của bài post về sản phẩm của công ty, Để lấy ra các bài post của tài khoản thì tạo request theo cấu trúc: graph.facebook.com/{user-id}/posts

2/ Lấy thông tin về comment của bài post đó bằng cách tạo request tới graph.facebook.com theo cấu trúc của nó để lấy ra thông tin: graph.facebook.com/[post_id]/comments (mỗi lần request để lấy thông tin thì phải có token đi kèm)

Tham khảo link này: http://stackoverflow.com/questions/4791951/retrieve-facebook-post-comments-using-graph-api

Thuc Coder viết 01:34 ngày 01/10/2018

Sản phẩm thì có quản tri của trang facebook đăng rồi chứ. app facebook api thì em tạo được rồi. dùng cái app đó tương tác trực tiếp trên developers.facebook.com để lấy thông tin của bạn bè trong list friends thì em làm được. Nhưng yêu cầu ở đây là lấy thông tin các thành viên trên trang facebook của công ty. Lấy về database luôn rồi làm gì thì làm. Em được giao làm để test thôi.

ACP viết 01:26 ngày 01/10/2018

Goup đó phải là group công khai. Sau đó mình request lấy ra danh sách member trong group: /{group-id}/members.
Kết quả trả ra thì như vầy:

{
  "id": "GROUP_ID", 
  "members": {
    "data": [
      {
        "name": "User's name", 
        "administrator": false, 
        "id": "User's ID"
      },
      ...

Khi có ID của từng member rồi thì lấy thông tin sẽ dễ hơn. Vậy có đúng ý em chưa?

Thuc Coder viết 01:26 ngày 01/10/2018

Chỉ lấy của những người like và comment sản phẩm mình đăng thôi anh. Em đọc, dịch trên mạng mà chưa hiểu được cách làm lắm.

ACP viết 01:33 ngày 01/10/2018

Câu trả lời đầu tiên là lấy ra những comment từ bài đăng đó em. Ý của em là không hiểu cái gì kìa

Thuc Coder viết 01:32 ngày 01/10/2018

Phải lấy thông tin của những người đã comment bài đăng nữa anh, để bên bộ phần hổ trợ khách hàng của mình tiện trao đổi hơn đấy ạ. Sr a, hôm qua tới giờ mới được làm bài này.

ACP viết 01:27 ngày 01/10/2018

Anh hiểu ý em rồi, mà không biết em có hiểu ý anh không

1/ Từ facebook api, em có lấy ra được danh sách các post của công ty chưa (các post này có thông tin: id, nội dung, thời gian,…)?
Tham khảo: https://developers.facebook.com/docs/graph-api/reference/v2.7/user/feed

2/ Với mỗi post id, em có lấy được danh sách các comment/like không? (trong ds này có id của người comment)
Tham khảo: https://developers.facebook.com/docs/graph-api/reference/v2.7/object/comments

3/ Với mỗi id của người comment (hoặc like), em có biết cách lấy ra thông tin người dùng ?
http://stackoverflow.com/questions/2833308/facebook-api-is-it-possible-to-get-a-users-public-profile-data-by-email-addres (câu trả lời được vote cao nhất)

Và dĩ nhiên em phải hiểu về cách request thông tin từ graph.facebook trước đã, rồi đi theo document của nó là lấy được những thông tin nó cho phép lấy (không phải thông tin gì cũng lấy được)

Thuc Coder viết 01:37 ngày 01/10/2018

Vâng a. Em hiểu cái hướng đi của bài toán rồi. Em cảm ơn a @Hao nhiều nhé.

Thuc Coder viết 01:31 ngày 01/10/2018

@Hao Em lấy được các comments của những bài post hiển thị trên graph api rồi(dữ liệu trả về kiểu json), dùng js sdk. Vấn đề bây giờ là em phải GET nó về ứng dụng. Hiện tại em làm ứng dụng trên nền web, em get được mỗi fields{name hoặc id} . (name hoặc id của tai khoản post sản phẩm lên facebook ) , còn get một lúc cả 2 cái thì không được. Và cho em hỏi luôn là: dùng js sdk get thông tin về hiển thị trên textbox rồi thì dùng code để đẩy nó vào lưu ở cơ sở dữ liệu được chứ ạ !

ACP viết 01:30 ngày 01/10/2018

Muốn lấy nhiều thông tin của người dùng, em phải kiểm tra cái permission. Lúc trước graph v1.0 thì facebook cho lấy hết các thông tin cơ bản (tên, email, sinh nhật,…), từ v2.0 thì không được phép lấy tùy tiện nữa mà phải yêu cầu permission: https://developers.facebook.com/docs/facebook-login/permissions

Mà tại sao phải hiển thị thông tin lên textbox rồi mới lưu bào db? (sếp bắt vậy à vì trong back-end có thể request trực tiếp được luôn)

Thuc Coder viết 01:37 ngày 01/10/2018

permission em check hết tất cả các quyền mà đâu hiển thị hết được nhỉ. Access Token:em chon chổ page access token chứ không chon user token đâu anh. Em hiển thị lên để em xem nó lấy thế nào thôi, chứ em củng chưa hỏi xếp là có phải hiển thị lên hay không?

ACP viết 01:28 ngày 01/10/2018

Em nên test trực tiếp bằng graph của facebook: https://developers.facebook.com/tools/explorer/145634995501895/ (yêu cầu đăng nhập bằng tài khoảng developer). Khi nó báo lỗi gì thì xem ngay sẽ dễ sửa hơn.

Thuc Coder viết 01:36 ngày 01/10/2018


Đoạn code em get các trường đó anh. Nó không get được trường posts. Trên graph api thì nó trả về được như hình đó ạ. Anh xem giúp với.

ACP viết 01:30 ngày 01/10/2018

Vậy tức là: trên graph thì chạy được ra Post mà code thì không ra?
Em chạy debug trong cái else để xem cấu trúc của biến response được không? Vì trên graph trả về 1 Object có propery là data mà em lại gán như 1 biến thì thấy hơi lạ

Thuc Coder viết 01:38 ngày 01/10/2018

Dạ. Graph chạy được. Mà code chạy không ra. Vì em củng chưa hiểu tường tận mấy cái này lắm nên em thấy khó. Em làm theo hướng dẫn trên documents của facebook ạ. Em đang ở ngoài. Lát về em làm tiếp. Nếu vẩn không được thì em nhờ a hướng dẫn chút nữa ạ.

Thuc Coder viết 01:38 ngày 01/10/2018

Hoặc nếu a có bài nào nhỏ nhỏ tương tự kiểu get dữ liệu về database nhự vậy thì cho em tham khảo với.em đọc documents với có chút code nữa thì chắc chắn em hiểu và làm được.

ACP viết 01:27 ngày 01/10/2018

Muốn học từ cơ bản thì em nên vào freecodecamp.com đăng kí 1 tài khoản để làm các bài tập của nó. Site này có các loại bài tập từ cơ bản đến nâng cao, có front-end, back-end, full-stack,… Làm đủ số bài theo yêu cầu còn được cấp chứng chỉ. Chứ chỉ làm bài tập về nhưng phần em gặp khó thì em không hiểu sâu, hiểu gốc ngọn của vấn đề đâu.

Thuc Coder viết 01:26 ngày 01/10/2018

Vâng. Nhưng ít ra em muốn cái trước mắt là làm được cái project mà giám đốc giao cho đã. Chứ không hoàn thành công việc được giao thì có khi lại không còn cơ hội mà làm việc tại công ty nữa chứ anh.

ACP viết 01:35 ngày 01/10/2018

Vậy thì ráng mò tiếp cái code
Cái chỗ em đang kẹt, không thể hiển thị post là do em gán data chưa đúng.response.posts là một mảng các object (theo như graph nó hiện ra) nên em không thể gán 1 mảng vào cái document.getElementById('posts').value được.

Em có thể làm bằng cách dùng vòng lặp đi qua cái mảng này:
Vd:
for(var i=0; i< reponse.posts.length; i++ { document.getElementById('posts1').value = reponse.posts[i].message; }

Mỗi cái posts có các thuộc tính là: message, created_time, id
post1 là id của ô hiển thị, em phải cần nhiều ô để hiển thị hết nội dung của các posts.

Thuc Coder viết 01:30 ngày 01/10/2018

Em dùng vòng lặp như anh vẩn không được, Cứ lấy id từng bài posts em gán cứng vào trong code thì sẽ lấy được nội dung bài post. Còn dùng vòng lặp như anh thì vẫn không được, em củng chẳng biết vì sao luôn.

Bài liên quan
0