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
.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
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.
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:
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?
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.
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
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.
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)
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é.
@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ứ ạ !
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)
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?
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.
Đ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.
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ạ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 ạ.
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.
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.
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.
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áidocument.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.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.