Định dạng HTML trong Facebook là gì?


Facebook gần đây đã công bố một tính năng cho phép người dùng tải xuống bản sao hồ sơ và nội dung của họ và hiện tính năng này đã có sẵn cho một số người dùng. Trong tệp zip có thể tải xuống, người dùng nhận được các tệp html bao gồm toàn bộ hồ sơ, tường, Lịch sử sự kiện, tin nhắn, Ghi chú, danh sách bạn bè của họ,. jpg của ảnh của họ, và. mp4 của video của họ, cũng như tệp chỉ mục để điều hướng nội dung. Dữ liệu có thể được sử dụng làm nhật ký hoặc để thay thế thông tin khác từ sự cố ổ cứng hoặc máy tính bị đánh cắp — nhưng không nhất thiết phải chuyển sang một mạng xã hội khác

Định dạng HTML trong Facebook là gì?

LÀM VIỆC THÔNG MINH HƠN - HỌC HỎI, PHÁT TRIỂN VÀ ĐƯỢC TRUYỀN CẢM HỨNG

Đăng ký ngay hôm nay

Để đọc toàn bộ câu chuyện, hãy trở thành người đăng ký Adweek+

Xem tùy chọn đăng ký

Đã là thành viên hay chưa?

Tùy thuộc vào mạng xã hội mà bạn tham gia, bạn có thể tin rằng cuộc di cư khỏi mạng xã hội đã bắt đầu hoặc ngược lại, cuộc di cư như vậy là không thể. Tuy nhiên, không thể phủ nhận rằng năm vừa qua đã chứng kiến ​​một sự thay đổi lớn trong cách tất cả chúng ta nhìn nhận, đánh giá và tham gia vào các mạng xã hội trực tuyến.

Từ nhiều vụ bê bối về quyền riêng tư và tuyên truyền cho đến thời gian ngừng hoạt động kéo dài cả ngày gần đây, Facebook đã khiến mọi người có lý do để đặt câu hỏi nếu không muốn nói là thẳng thừng từ chối việc sử dụng Nền tảng. The most recent revelation that the social networking company was storing, in clear text, the passwords to millions of Facebook and Instagram user accounts caused further erosion to confidence in Facebook's security practices. Perhaps necessitated by the closure of its failed social platform Google+, Google has become the first major tech player to volunteer a path for users to take their data out of a social platform in an interoperable format. An entire movement known as the web xã hội phi tập trung đã xuất hiện và người tạo ra World Wide Web, Tim Berners Lee, đang ủng hộ một cách tiếp cận mới đối với quyền sở hữu dữ liệu cá nhân và .

Bất chấp bối cảnh ngày càng tăng của các lựa chọn thay thế cho các nền tảng xã hội khép kín, thống trị (xem phần 3 của loạt bài này. Dữ liệu cá nhân tự lưu trữ là chìa khóa cho bốn lựa chọn thay thế đầy hứa hẹn của Facebook), vấn đề vẫn còn. làm thế nào một người dùng bình thường có thể thực sự rời khỏi các nền tảng này với dữ liệu của họ không chỉ nguyên vẹn mà còn hữu ích?

Có lẽ mang lại cho người dùng cảm giác an toàn sai lầm, Facebook quảng cáo cái gọi là lợi ích này trong phần "Tải xuống thông tin của bạn" trong menu cài đặt người dùng. Tại thời điểm bài viết này được xuất bản, văn bản của phần đó gợi ý rõ ràng (xem ảnh chụp màn hình bên dưới) rằng bạn có thể tải xuống dữ liệu của mình và mang dữ liệu đó đến một dịch vụ khác

"Bạn có thể tải xuống bản sao thông tin Facebook của mình bất kỳ lúc nào. Bạn có thể tải xuống tất cả cùng một lúc hoặc bạn chỉ có thể chọn loại thông tin và phạm vi ngày bạn muốn. Bạn có thể chọn nhận thông tin của mình ở định dạng HTML dễ xem hoặc định dạng JSON , định dạng này có thể cho phép dịch vụ khác nhập thông tin dễ dàng hơn.

Định dạng HTML trong Facebook là gì?

Khả năng tải xuống bản sao dữ liệu của bạn và nhập dữ liệu đó vào một dịch vụ khác được quảng cáo rõ ràng trong Giao diện người dùng của Facebook.

Khi nói đến Facebook, các bài báo hiện có và hướng dẫn "cách thực hiện" về chủ đề này chủ yếu tập trung vào khía cạnh hành vi hoặc văn hóa của việc rời đi, đảm bảo với bạn rằng vẫn có cuộc sống sau cuộn vô tận và các nút Thích có mặt khắp nơi. Thật không may, cách tiếp cận "thoát và quên" này không đặc biệt hữu ích đối với những người trong chúng ta, những người muốn lưu giữ dữ liệu của mình như thể nó là một cuốn sổ lưu niệm về những kỷ niệm hoặc những người chưa sẵn sàng từ bỏ mạng xã hội nói chung và đơn giản

Giống như với Google+, các mạng xã hội khác nhau có khả năng cung cấp cho bạn cách tải xuống thông tin cá nhân của bạn như một hành động cuối cùng trước khi đóng tài khoản của bạn. Tuy nhiên, trong khi có thể tải xuống dữ liệu của bạn để bảo quản an toàn cá nhân hoặc lưu trữ dữ liệu đó trong một dịch vụ thay thế có thể chưa tồn tại là một việc, thì đó lại là một thách thức hoàn toàn khác để duy trì tính liên kết hợp lý của dữ liệu đó khi bạn trải nghiệm nó như một . nói cách khác, bối cảnh phía sau và mối quan hệ giữa ảnh, sự kiện, cập nhật trạng thái, liên kết, danh bạ, nhóm của bạn, v.v. Trong số các chuyên gia về mạng xã hội, mê cung dữ liệu xã hội được kết nối với nhau này được gọi là "đồ thị xã hội" của bạn. "

Một ví dụ về thách thức đặt ra trước mắt chúng ta. nếu bạn có thể tải xuống một ảnh trên Facebook được gắn thẻ tên của những người bạn có mặt trong ảnh, thì làm cách nào để biểu đồ dữ liệu xã hội đó được lưu giữ theo cách hữu ích trong một số bối cảnh không phải Facebook khác (trên PC, điện thoại thông minh của bạn

Tại ProgrammableWeb, chúng tôi muốn tìm hiểu xem cần những gì từ góc độ kỹ thuật để đóng gói và rời khỏi nền tảng khép kín nhất, Facebook và đưa biểu đồ xã hội của bạn đến một nơi khác. Nói cách khác, trích xuất dữ liệu quý giá nhất của bạn (bạn bè, ảnh, lịch sử của bạn, v.v. ) theo cách mà nó hoàn toàn có thể tương tác với một số sản phẩm thay thế khác của Facebook (có lẽ là một trong những mạng xã hội phi tập trung mới nổi). Hoặc, với bất cứ điều gì cho vấn đề đó

Ko có lối thoát dễ dàng

Trong nỗ lực di chuyển thành công dữ liệu của mình từ tài khoản Facebook sang tài khoản khác, chúng tôi đã xem xét ba giải pháp khả thi theo thứ tự ưu tiên rõ ràng cho người tiêu dùng nói chung

  1. Nhận dữ liệu của chúng tôi từ Facebook và sau đó tải các tệp đã tải xuống lên một mạng xã hội hoặc kho lưu trữ dữ liệu khác
  2. Thiếu tùy chọn 1, lấy dữ liệu của chúng tôi từ Facebook và hy vọng có một ứng dụng hoặc dịch vụ đám mây của bên thứ ba có thể di chuyển dữ liệu của chúng tôi sang một mạng xã hội hoặc kho lưu trữ dữ liệu khác cho chúng tôi
  3. Viết mã của riêng chúng tôi để di chuyển dữ liệu

Tùy chọn thứ ba là ít mong muốn nhất. đó sẽ là công việc hiệu quả nhất và sẽ cần nhiều tài nguyên hơn để sẵn sàng hoặc hữu ích cho người dùng bên ngoài nhóm của chúng tôi. Trước khi đi theo con đường đó, chúng tôi đã điều tra những gì có thể và những gì người khác đã xây dựng

Mọi người dùng trên Facebook đều có tùy chọn yêu cầu dữ liệu họ đã tạo trên Facebook từ cài đặt tài khoản của họ. Như có thể thấy trong menu thả xuống trong ảnh chụp màn hình bên dưới, họ có thể chọn HTML hoặc JSON làm định dạng đầu ra, cho bất kỳ phạm vi ngày cụ thể nào và với chất lượng phương tiện Thấp, Trung bình hoặc Cao. Facebook cho biết có thể mất tới ba ngày để tổng hợp dữ liệu này và gửi qua email cho bạn dưới dạng tệp ZIP. Tuy nhiên, trong các thử nghiệm của chúng tôi, chỉ mất ít hơn một. Nếu bạn đã chọn HTML làm định dạng đầu ra, tệp ZIP chứa các tệp HTML mà bạn có thể mở trong trình duyệt web của mình, bao gồm cả chỉ mục. htm dùng làm mục lục cho các tệp khác. Các trang này đơn giản trông giống như một phiên bản đơn giản hơn nhiều của chính Facebook. Tệp ZIP cũng chứa tất cả hình ảnh của bạn, cùng với danh sách các chủ đề quảng cáo mà họ đã chỉ định cho bạn, có thể là nội dung thú vị hoặc hữu ích duy nhất của tệp này

Định dạng HTML trong Facebook là gì?

Khi yêu cầu tải xuống dữ liệu của họ, người dùng Facebook có thể chọn giữa định dạng HTML và JSON

Vấn đề cơ bản với tệp ZIP được gửi qua email — với HTML hoặc JSON — là thiếu liên kết hoặc ngữ cảnh. Tệp này không chỉ hữu ích một chút đối với những người muốn thoát nhưng không quên, nó hoàn toàn không hữu ích đối với bất kỳ ai muốn lấy dữ liệu của họ ở nơi khác. Với tính năng tải xuống HTML, ngay cả những việc đơn giản như tải những ảnh đó cùng với mô tả của chúng lên album Google Photos cũng gần như không thể. Ảnh chụp màn hình sau đây minh họa loại "dữ liệu" mà tệp ZIP của tệp HTML chứa về hoạt động dòng thời gian của bạn

Định dạng HTML trong Facebook là gì?

Mặc dù Facebook cho phép bạn tải xuống dữ liệu của mình nhưng quá trình tải xuống lại thiếu một số ngữ cảnh quan trọng

Nếu đây là tất cả những gì bạn nhận được, thì việc mất bối cảnh quan trọng thật ngoạn mục. 45 người quan tâm đến điều gì?

Hoặc, nếu bạn chọn JSON làm định dạng đầu ra, thì tệp ZIP chứa các tệp JSON được sắp xếp thành nhiều thư mục. không có chỉ số. json hoặc mục lục khác và dữ liệu JSON không được liên kết với nhau cũng như không chứa siêu dữ liệu hữu ích như cài đặt quyền riêng tư (một ngữ cảnh cực kỳ quan trọng có sẵn thông qua API). Take for example this comment item from my comments.json file, which contains an array of all comments I have ever left on my own posts, on other people's posts, or in groups:

{
  	"timestamp": 1553285055,
  	"data": [
    	{
      	"comment": {
        "timestamp": 1553285055,
        "comment": "Ah! All of that beer on the left is so much more expensive in the States!",
        "author": "Shelby Switzer"
      	}
    	}
   	],
   	"title": "Shelby Switzer commented on Ira Smith's photo."
}

Không có ID hoặc liên kết nào trong JSON này. Do đó, tôi không có cách nào đơn giản để tìm ra bức ảnh mà tôi đã để lại bình luận này. Tôi có thể viết một số mã để Phân tích cú pháp tên của người bạn ra khỏi tiêu đề, điều này sẽ giúp tôi tìm thấy người bạn đã đăng ảnh và có lẽ tôi có thể . Nhưng dấu vết dừng lại ở đó. Trong các bài viết. json, bạn có thể ghép một số thông tin nhất định, chẳng hạn như nhận xét của người khác về các cập nhật trạng thái của riêng bạn vì thông tin này được trình bày dưới dạng cấu trúc JSON được lồng sâu. Ngoài ra, các liên kết trong dữ liệu hoặc vị trí của dữ liệu trên trang web Facebook bị thiếu.

Nếu chúng ta nhìn ra bên ngoài Facebook để xem những gã khổng lồ công nghệ khác đang làm gì, chúng ta sẽ thấy những dịch vụ tương tự. Với công cụ Takeout của Google dành cho dữ liệu mạng xã hội Google+ đã tải xuống của bạn, bạn cũng được cung cấp tùy chọn tải xuống dữ liệu của mình dưới dạng CSV hoặc JSON. Với Twitter, người dùng không thể chọn định dạng đầu ra và thông tin duy nhất họ cung cấp về dữ liệu nào sẽ được gửi cho bạn là dữ liệu đó "chúng tôi tin là phù hợp và hữu ích nhất cho bạn. " Hóa ra đó là dữ liệu HTML cùng với tệp CSV chứa tất cả các tweet của bạn

Định dạng HTML trong Facebook là gì?

Công cụ Takeout của Google

Định dạng HTML trong Facebook là gì?

Tiện ích của Twitter để tải xuống dữ liệu của bạn

Thật thú vị, cả Google và Facebook, cùng với Twitter và Microsoft, đã công bố vào năm ngoái một quan hệ đối tác mở có tên là Dự án truyền dữ liệu để hỗ trợ khả năng tương tác giữa các nền tảng. Dự án Truyền dữ liệu vẫn đang ở giai đoạn đầu. kiến trúc và triển khai của nó vẫn đang được xác định và chức năng duy nhất hoạt động được cho đến nay đối với Facebook có liên quan đến xuất ảnh. Điều này không có gì ngạc nhiên, với lịch sử bảo vệ dữ liệu lâu dài của Facebook. Không có bất kỳ quy định nào của chính phủ do Hoa Kỳ hoặc châu Âu hậu thuẫn buộc Facebook phải ra tay, Facebook không thực sự quan tâm đến việc giúp người dùng rời khỏi hoặc thậm chí hiểu ý nghĩa của dữ liệu họ có thể tải xuống

Ngoài các tùy chọn tải xuống JSON và HTML, khả năng cuối cùng còn lại được Facebook hỗ trợ để trích xuất thứ gì đó hữu ích từ xa là thông qua API Đồ thị của Facebook (về mặt kỹ thuật, trình quét web có thể hoạt động, nhưng Điều khoản dịch vụ của Facebook cấm sử dụng chúng). Tuy nhiên, bản thân tùy chọn API hoàn toàn không phù hợp với người dùng Facebook hàng ngày. Giống như tất cả các API, API Đồ thị của Facebook được thiết kế để sử dụng với phần mềm được viết tùy chỉnh của riêng bạn (hoặc ưu đãi như vậy từ nhà phát triển phần mềm bên thứ ba). Mặc dù tệp ZIP có thể tải xuống chứa một số siêu dữ liệu cực kỳ thú vị, nhưng dữ liệu mà bạn thực sự muốn chuyển sang một dịch vụ khác chủ yếu có thể truy cập được thông qua API này

Chúng tôi đã tìm kiếm trên web để xem liệu có bất kỳ công cụ nào như vậy đã tồn tại hay không và mặc dù chúng tôi đã tìm thấy một số dự án nguồn mở tương tự như những gì chúng tôi đang cố gắng đạt được, nhưng chúng chưa được cập nhật trong nhiều năm (chẳng hạn như một plugin Wordpress để nhập một số dữ liệu mạng xã hội . Một số công ty và dự án nguồn mở đang bắt đầu xuất hiện để giúp giải quyết vấn đề này, chẳng hạn như Cozy, một đám mây dữ liệu cá nhân nguồn mở đã được thiết lập. Tuy nhiên, tại thời điểm xuất bản, Cozy không tích hợp với Facebook. Dự án Solid, cũng nhằm mục đích giúp người dùng lưu trữ dữ liệu trong các đám mây dữ liệu cá nhân của riêng họ, được gọi là Solid POD, chưa có bất kỳ hỗ trợ dữ liệu xã hội nào. Công cụ Solid duy nhất có sẵn cho đến nay là trình nhập Google Takeout này, công cụ này dường như chưa hoạt động. Một dịch vụ khác mà chúng tôi đã tìm thấy, Truyền phát. io, dường như muốn tích hợp với Facebook. Nhưng, tương tự, nó vẫn chưa được ra mắt tại thời điểm xuất bản bài viết này

Định dạng HTML trong Facebook là gì?

Một tin nhắn thú vị nhưng ngại ngùng trên stream. trang chủ của io

Cuối cùng, chúng tôi không thể sử dụng bất kỳ công cụ nào trong số này để lấy dữ liệu của mình ra khỏi Facebook và làm cho nó có thể sử dụng được

Không còn lựa chọn nào khác, chúng tôi quyết định tự xây dựng

Cách tiếp cận của chúng ta

Đầu tiên, chúng tôi xác định sản phẩm khả thi tối thiểu. một công cụ dòng lệnh, sử dụng API Đồ thị của Facebook, lấy một bộ dữ liệu cốt lõi từ Facebook, lưu trữ cục bộ ở định dạng có thể sử dụng được (JSON) và chuyển đổi dữ liệu đó thành định dạng có thể tương tác bằng các tiêu chuẩn dữ liệu hiện có. Chúng tôi đã quyết định rằng tập dữ liệu cốt lõi của mình phải bao gồm thông tin hồ sơ, bài đăng, hoạt động Nguồn cấp dữ liệu , album và ảnh của người dùng.

Các mục tiêu kéo dài cho dự án bao gồm lưu trữ nó dưới dạng ứng dụng web, lấy dữ liệu khác, khởi chạy ứng dụng giống như Facebook chìa khóa trao tay mà bất kỳ ai cũng có thể sử dụng và kết nối ứng dụng để tải dữ liệu lên các nền tảng xã hội thay thế như Mastodon

Sản phẩm khả thi tối thiểu (MVP) thu được, được gọi là Salvager, được xây dựng bằng Ruby nhưng có thể chạy trong Bộ chứa Docker . Do đó, bạn không cần phải biết hoặc cài đặt Ruby để sử dụng nó. Tất cả những gì bạn cần để sử dụng ứng dụng hiện tại là tài khoản Facebook Nhà phát triển Cổng thông tin và khả năng chạy Docker. Chúng tôi đã mã nguồn mở theo GPL 3. 0 và bạn có thể tải xuống miễn phí Mã nguồn hoặc bộ chứa Docker từ repo Salvager trên Github của ProgrammableWeb (hãy đảm bảo cho chúng tôi biết về bất kỳ nhánh nào. ).

khả năng tương tác

Để làm cho dữ liệu có thể tương tác theo cách không độc quyền nhất có thể, chúng tôi đã xem xét , được phát triển và xuất bản bởi W3C Mạng xã hội . Mặc dù nhóm làm việc chính thức không còn hoạt động, nhưng có một nhóm cộng đồng W3C đã tiến hành công việc và một số dự án mạng xã hội phi tập trung mới như Mastadon hỗ trợ các giao thức này trong API của họ cho mục đích nhập và xuất dữ liệu. Điều này cho chúng tôi một tia hy vọng rằng nếu chúng tôi có thể xuất dữ liệu của mình ra khỏi Facebook thông qua API, hãy dịch dữ liệu đó sang định dạng W3C, sau đó nhập dữ liệu đó vào một nơi khác như Mastodon.

Trong số các Giao thức web xã hội của W3C, giao thức cốt lõi là ActivityPub, là giao thức API máy khách-máy chủ cho các mạng xã hội sử dụng ActivityStreams 2. 0 định dạng dữ liệu. ActivityStreams về cơ bản là JSON-LD với từ vựng để xác định các hoạt động xã hội. LD trong JSON-LD là viết tắt của "dữ liệu được liên kết" và định dạng JSON này cho phép bạn xâu chuỗi các mục dữ liệu riêng lẻ với nhau theo cách gọn nhẹ, dựa trên tiêu chuẩn. Kết quả là một biểu đồ dữ liệu giống như biểu đồ xã hội đã nói ở trên. Ví dụ: trong biểu đồ xã hội của bạn, tên của bạn được kết nối với ảnh, ảnh này được kết nối với "Lượt thích", ảnh này được kết nối với những người bạn đã nhấp vào nút thích trên ảnh đó, v.v. JSON-LD, cũng là một tiêu chuẩn của W3C, giúp máy dễ dàng bắt đầu với bất kỳ mục dữ liệu nào và tìm phần còn lại bằng cách duyệt qua các liên kết, giống như chúng ta có thể tìm thông tin liên quan bằng cách nhấp vào Facebook

Các thành phần phù hợp nhất của đối tượng ActivityStreams là tác nhân, hoạt động và đối tượng. Từ vựng xác định các loại diễn viên ("Người", "Tổ chức", v.v.), được thể hiện dưới dạng động từ ("Thêm", "Tạo", "Thích", "Xóa", v.v. ) và ("Ghi chú", "Video", "Sự kiện", v.v.). Các đặc điểm kỹ thuật là rất linh hoạt. nếu bạn muốn sử dụng một loại không được xác định bởi thông số kỹ thuật, chẳng hạn như một mô hình hiện có được xác định bởi lược đồ json. org, bạn có thể liên kết đến lược đồ đó Tài liệu trong @context của đối tượng .

Để minh họa cách chúng ta có thể mô tả các hoạt động trên Facebook bằng ActivityStream, hãy lấy hai đối tượng JSON sau đây. Đầu tiên là cập nhật trạng thái từ dòng thời gian trên Facebook của tôi, được lấy từ Facebook Graph API. Thứ hai là cập nhật trạng thái tương tự, được chuyển đổi thành ActivityStreams

{
  "id": "10157170274089000_10157149090549111",
  "from":{"name":"Shelby Switzer","id":"10157170274089000", "link": " HTTPS://www.facebook.com/app_scoped_user_id/MNNpZADpBWEdmN2Q5ZA1h"},
  "message":"Excited for spring!",
  "created_time":"2019-02-26T17:58:43+0000",
  "privacy":{"value":"ALL_FRIENDS","description":"Your friends", "friends":"", "allow":"", "deny":""},
  "permalink_url":"https://www.facebook.com/10157170274089000/posts/10157149090549111",
  "status_type":"mobile_status_update",
  "type":"status",
  "updated_time":"2019-02-28T02:04:02+0000"
}

{
  	"@context": "https://www.w3.org/ns/activitystreams",
  	"summary": "Shelby Switzer shared a mobile status update",
  	"type": "Create",
  	"published": "2019-02-26T17:58:43+0000",
  	"actor": {
		"id": "https://www.facebook.com/app_scoped_user_id/MNNpZADpBWEdmN2Q5ZA1h",
		"facebookID": "10157170274089000",
		"name": "Shelby Switzer"
  },
  	"audience": {
		"name": "ALL_FRIENDS",
		"description": "Your friends"
  	},
  	"object": {
		"id": "https://www.facebook.com/10157170274089000/posts/10157149090549111",
		"facebookID": "10157170274089000_10157149090549111",
		"type": "Status",
		"content": "Excited for spring!",
		"updated": "2019-02-28T02:04:02+0000"
	}
}

Khi chuyển đổi dữ liệu nguồn cấp dữ liệu Facebook sang ActivityStreams, đối với mọi mục trong nguồn cấp dữ liệu, dự án Salvager của chúng tôi

  • đặt loại Hoạt động là "Tạo" cho mọi mục trong nguồn cấp dữ liệu,
  • tạo một bản tóm tắt bằng cách sử dụng thuộc tính "từ" của mục và "status_type" của mục đó
  • đặt "diễn viên" làm thuộc tính "từ" của mục
  • tạo đối tượng "đối tượng" bằng cách sử dụng thông tin bảo mật của mục
  • tạo một "đối tượng" với nội dung của mục, chẳng hạn như ảnh Facebook URL và chú thích, văn bản cập nhật trạng thái hoặc liên kết .
  • đặt loại của đối tượng thành loại của mục do Facebook xác định, loại này có thể là một trong các loại sau. "trạng thái", "ảnh", "liên kết", "video"

Tất cả các thuộc tính ID đều tương ứng với thuộc tính "liên kết" có liên quan do Facebook cung cấp vì ActivityPub ưu tiên ID là URL. Tôi cũng quyết định giữ lại các giá trị ID thực tế, như trường "facebookID", vì nó có thể hữu ích sau này nếu tạo URL hoặc ID mới

Đầu ra cuối cùng của quá trình chuyển đổi nguồn cấp dữ liệu của ứng dụng là tài liệu JSON chứa đối tượng Bộ sưu tập ActivityStreams với tóm tắt "Nguồn cấp dữ liệu hoạt động Facebook" và . items array containing the transformed feed items.

giả định

Đi sâu vào vấn đề này, chúng tôi đã có một số giả định về mức độ dễ hoặc khó của một số phần của quy trình.

Giả thiết. Facebook sẽ rất khó lấy dữ liệu mà bạn quan tâm
Thực tế. Thật

Chúng tôi biết điều này sẽ khó khăn; . Giá trị chính mà Facebook bán cho người dùng là mạng lưới bạn bè nên đương nhiên họ sẽ không sẵn sàng chia sẻ. Với API Đồ thị, bạn không thể lấy bất kỳ thông tin nào về bạn bè của mình. tên của họ, thông tin liên hệ của họ hoặc thậm chí các bài đăng họ đã tạo trên tường của bạn trừ khi những bài đăng đó ở chế độ công khai

Cách duy nhất bạn có thể lấy danh sách bạn bè hiện tại của mình là thông qua tệp ZIP đã thảo luận ở trên — và thậm chí danh sách đó chỉ là danh sách tên không có thông tin liên hệ. Có một cách giải quyết. cung cấp một ứng dụng như ứng dụng Salvager của chúng tôi đã được Facebook phê duyệt (không phải vậy), nếu tất cả bạn bè của bạn phê duyệt cùng một ứng dụng thì ứng dụng đó có thể truy cập dữ liệu của họ. Tuy nhiên, như có thể thấy từ ảnh chụp màn hình bên dưới, Salvager đang ở trạng thái chưa được phê duyệt. Nó đã ở trong tình trạng lấp lửng đó trong nhiều tuần mặc dù giải pháp được ước tính rõ ràng là 5 ngày và một lời hứa trực tiếp đã mất hiệu lực từ lâu từ Facebook để giải quyết yêu cầu trong vòng 24 giờ. Giả định của chúng tôi là Facebook đang bỏ qua mục đích chính của ứng dụng của chúng tôi là giúp người dùng rời khỏi Facebook và mang theo dữ liệu của họ. Vì vậy, việc áp dụng hàng loạt bởi bạn bè của bạn là không thể

Định dạng HTML trong Facebook là gì?

Đã nhiều tuần trôi qua kể từ khi ứng dụng Trình cứu dữ liệu trên Facebook của ProgrammableWeb được đặt ở trạng thái 5 ngày như hiển thị ở trên

Giả thiết. Hiểu và duyệt biểu đồ sẽ đơn giản
Thực tế. Sai

Các biểu đồ phức tạp và không dễ phát hiện thông qua API REST mà Facebook cung cấp cho các nhà phát triển công khai. API mà Facebook sử dụng nội bộ cho mục đích này — dựa trên GraphQL rất không phải RESTful — không có sẵn cho công chúng. Trong API REST của Facebook, mối quan hệ giữa các mô hình Tài nguyên không được thể hiện trong dữ liệu và không có liên kết nào gợi ý về những đối tượng hoặc trường liên quan nào có thể có sẵn . Ngoài ra, nếu tài liệu đơn giản giải thích cách các mô hình liên quan đến nhau tồn tại trong cổng thông tin dành cho nhà phát triển của Facebook, thì chúng tôi không thể tìm thấy tài liệu đó.

Thật an ủi, việc tìm ra cách lấy dữ liệu tôi muốn từ API sẽ mất thời gian gấp năm lần nếu không có Trình khám phá đồ thị của Facebook; . Explorer cho phép tôi nhận mã thông báo OAuth cho tài khoản người dùng thực của mình và cấp cho tôi UI for searching resource models and fields that I could add to my query. However, even the Explorer doesn't expose all functionality and fields such as querying specific fields within the "from" property of a Post. Getting to the MVP of Salvager took some exploration using CURL trong dòng lệnh.

Giả thiết. Tôi có thể cần học RDF để cắm dữ liệu của mình vào web phi tập trung
Thực tế. Sai

Khi đọc thông số kỹ thuật của Solid và nhận ra rằng cộng đồng web xã hội phi tập trung trùng lặp rất nhiều với cộng đồng web ngữ nghĩa và dữ liệu được liên kết, tôi bắt đầu lo sợ rằng mình sẽ phải dành nhiều thời gian để học RDF hoặc các giao thức web ngữ nghĩa khác mà tôi rất có.

May mắn là tôi không phải chui xuống cái hang thỏ đó. JSON-LD, về mặt kỹ thuật là một Sê-ri hóa dựa trên JSON của RDF (bản thân nó là XML-based), proved to be very accessible, and while ActivityPub's actor, activity (as a verb), and object concepts are reminiscent of RDF's Subject Predicate Object triple concept, it was much easier to grok and implement.

thử thách

Hiểu các quyền trên biểu đồ là khó

Với mã thông báo truy cập OAuth, nhà phát triển phải chỉ định họ muốn yêu cầu quyền nào từ người dùng và Facebook có 36 quyền khác nhau mà bạn có thể yêu cầu. Đối với mối quan hệ giữa các mô hình tài nguyên, có rất ít lời giải thích hoặc khả năng khám phá về mối quan hệ giữa các loại quyền và mô hình tài nguyên

Tôi vẫn không biết tại sao một số trường tôi yêu cầu không được phép hoặc "trống" (xem ảnh chụp màn hình bên dưới). Trình khám phá đồ thị trong cổng thông tin dành cho nhà phát triển không cung cấp bất kỳ thông tin nào và khi thử yêu cầu bằng dòng lệnh, tôi đã nhận được lỗi Oauth cho tôi biết rằng tôi đã yêu cầu một trường mà tôi không có quyền truy cập. Nhưng lỗi không cho tôi biết đó là trường nào

Điều này đặc biệt khó chịu khi gọi rõ ràng hơn 20 trường trên biểu đồ trong một yêu cầu;

Định dạng HTML trong Facebook là gì?

Định dạng HTML trong Facebook là gì?

Ánh xạ hoạt động Facebook với các hoạt động ActivityStreams không phải là một

Có lẽ làm nổi bật sự thiếu sót đáng kể trong đặc tả ActivityStreams, các loại hoạt động cốt lõi của Facebook, chẳng hạn như "bài đăng", "câu chuyện" và "trạng thái" không phải là loại đối tượng mặc định được xác định bởi ActivityStreams và tôi cũng không thể tìm thấy các lược đồ phù hợp trên jsonschema. org để sử dụng thay thế. Do đó, khi chuyển đổi các mục nguồn cấp dữ liệu hoạt động của Facebook thành ActivityStreams, tôi chỉ sử dụng các thuật ngữ của Facebook làm loại Đối tượng và chuyển hầu hết các thuộc tính được liên kết sang đối tượng ActivityStreams một đối một. Ví dụ: một mục dữ liệu từ Facebook đại diện cho một ảnh mới có thể có các thuộc tính này

{
  "id":"10157170274089000_10157131857649222",
  "from":{"name":"Shelby Switzer","id":"10157170274089000", "link": "https://www.facebook.com/app_scoped_user_id/MNNpZADpBWEdmN2Q5ZA1h"},
  "name":"Shelby Switzer",
  "description": "Bad hair day",
"picture":"https://scontent.xx.fbcdn.net/v/t1.0-0/p130x130/52486516_10157131857624000_6208825175731863222_n.jpg?_nc_cat=108&_nc_ht=scontent.xx&oh=1f2632c4192683ee97350fac059c786e&oe=5D0FE2BB",
"permalink_url":"https://www.facebook.com/10157170274089000/posts/10157131857649222",
  "status_type":"added_photos",
  "type":"photo",
}

Tôi đã sử dụng các thuộc tính dành riêng cho Facebook như tên và mô tả và tôi đã sử dụng status_type, type, and from fields to represent the same information in the summary and object type in this ActivityStreams version of the data:

{
  	"@context": "https://www.w3.org/ns/activitystreams",
  	"summary": "Shelby Switzer shared an added photos update",
  	"type": "Create",
  	"object": {
    	"id": "https://www.facebook.com/10157170274089000/posts/10157131857649222",
    	"facebookID": "10157170274089000_10157131857649222",
    	"type": "Photo",
    	"name": "Shelby Switzer",
  		"description": "Bad hair day",
    	"picture": "https://scontent.xx.fbcdn.net/v/t1.0-0/p130x130/52486516_10157131857624000_6208825175731863222_n.jpg?_nc_cat=108&_nc_ht=scontent.xx&oh=1f2632c4192683ee97350fac059c786e&oe=5D0FE2BB",
  	}
}

Quyền riêng tư không được xác định bởi ActivityPub

Như đã thảo luận ở trên, tin vui là Facebook đính kèm một số thông tin về quyền riêng tư vào các đối tượng của mình và dữ liệu đó có thể được truy xuất thông qua API. Tin xấu là giao thức ActivityPub mọi triển khai đều xử lý quyền riêng tư theo cách riêng của nó và tôn trọng cài đặt quyền riêng tư hoặc khả năng hiển thị của người dùng. Vì vậy, thật kỳ lạ, không có điều khoản nào trong đặc tả ActivityStreams để mô tả quyền riêng tư hoặc nhập dữ liệu quyền riêng tư có sẵn thông qua API của Facebook. Gần nhất tôi có thể tìm thấy trong thông số ActivityStreams là thuộc tính "đối tượng", mà tôi đã sử dụng để mô tả cài đặt quyền riêng tư của Facebook được liên kết với từng mục nguồn cấp dữ liệu hoạt động. Tôi đã ánh xạ trực tiếp các giá trị quyền riêng tư từ Facebook tới tên đối tượng trong ActivityStreams. ví dụ: nếu giá trị quyền riêng tư của một bài đăng từ Facebook là "TẤT CẢ BẠN BÈ", thì hoạt động ActivityStreams tương ứng có một đối tượng đối tượng có tên "TẤT CẢ BẠN BÈ". " Do sự nhạy cảm xung quanh các vấn đề về quyền riêng tư ngày nay, tôi cảm thấy vô cùng khó chịu khi xây dựng một công cụ dữ liệu không duy trì dữ liệu đó trong kết quả cuối cùng theo một cách nào đó

Bước tiếp theo

Sau ba tuần tranh luận về API Đồ thị của Facebook và giải mã các giao thức web xã hội phi tập trung, chúng tôi đã xây dựng một ứng dụng nguyên mẫu để lấy dữ liệu Facebook của bạn từ API Đồ thị, lưu dưới dạng JSON thô và chuyển đổi thành các tệp phẳng của JSON ActivityStreams 2. 0. Chúng tôi đã phát hiện ra rằng Facebook áp đặt các ràng buộc rất thực tế đối với dữ liệu mà bạn có thể truy cập, từ việc che giấu quyền và mối quan hệ dữ liệu, cố ý hay không cố ý, đến hạn chế quyền truy cập vào thông tin của bạn bè bạn. Nếu Facebook thực sự cam kết với Dự án truyền dữ liệu, thì có lẽ chúng ta sẽ thấy một số hạn chế này được nới lỏng. Cho đến lúc đó, nếu chúng tôi muốn bao gồm các bài đăng từ bạn bè trong quá trình cứu dữ liệu của mình, chúng tôi sẽ phải xây dựng một ứng dụng mà Facebook sẽ phê duyệt để bạn bè có thể cấp các quyền đó

Từ góc độ khả năng tương tác, vẫn còn một số thách thức với việc sử dụng ActivityStream và các giao thức liên quan của chúng tôi. Có một số điểm dữ liệu từ Facebook mà chúng tôi chưa thử chuyển đổi, chẳng hạn như dữ liệu về vị trí và sự kiện. Chúng tôi phải đưa ra các giả định và có quyền tự do với ánh xạ thuộc tính, bao gồm cả thông tin quan trọng về quyền riêng tư. Khó áp dụng từ vựng ActivityStreams cho các mô hình Facebook như Bài đăng, Trạng thái hoặc Câu chuyện. Loại đối tượng "Ghi chú" của ActivityStreams dường như là tùy chọn gần nhất cho bất kỳ loại nào trong số này nhưng không giống như một sự thay thế tự nhiên. Có thể tồn tại các đặc tả lược đồ được công nhận rộng rãi hơn phù hợp hơn để mô tả các mô hình này, nhưng chúng tôi vẫn chưa tìm thấy chúng. Chúng tôi có thể cần phải tự tạo chúng để tiếp tục dự án này

Bây giờ chúng tôi có dữ liệu ở định dạng dựa trên tiêu chuẩn, bước tiếp theo là cắm nó vào một nền tảng khác. Trong bài viết tiếp theo của chúng tôi, chúng tôi đi sâu vào bối cảnh web xã hội hiện tại trông như thế nào và liệu có tồn tại bất kỳ lựa chọn thay thế Facebook khả thi nào mà chúng tôi có thể di chuyển biểu đồ xã hội của mình sang hay không, tốt nhất là bằng API

Hãy chắc chắn để đọc bài viết xã hội tiếp theo. Dữ liệu cá nhân tự lưu trữ là chìa khóa cho bốn lựa chọn thay thế đầy hứa hẹn của Facebook

Tôi có nên tải xuống dữ liệu Facebook của mình dưới dạng HTML hoặc JSON không?

Chọn định dạng tệp là HTML hoặc JSON . Là một nhà phát triển, tôi thích định dạng JSON giúp dễ dàng viết tập lệnh, phân tích dữ liệu và tải lên nền tảng khác nếu đó là mục tiêu của bạn. Bạn vẫn sẽ có tất cả ảnh dưới dạng tệp bên ngoài, vì vậy nếu đó là tất cả những gì bạn quan tâm thì điều đó không thành vấn đề.

Sự khác biệt giữa định dạng HTML và JSON là gì?

HTML là một ngôn ngữ tương đối đơn giản và rất dễ học đối với người mới bắt đầu. Tuy nhiên, nó có một số hạn chế về những thứ bạn có thể làm với nó. JSON (Ký hiệu đối tượng JavaScript) là ngôn ngữ thường được sử dụng để lưu trữ và truyền dữ liệu

HTML hoặc JSON tốt hơn là gì?

Trong hầu hết các trường hợp, JSON chắc chắn dễ đọc hơn ở dạng mở rộng so với XML. JSON có thể có số lượng ký tự thấp hơn đáng kể giúp giảm chi phí truyền dữ liệu. JSON dễ phân tích hơn nhiều. Nhưng điều này chỉ có liên quan nếu một người đang viết một trình phân tích cú pháp không phải là hoạt động phổ biến vào thời điểm này

Tải xuống dữ liệu Facebook của bạn có hiển thị các tin nhắn đã xóa không?

Chúng tôi lưu trữ các loại dữ liệu khác nhau trong các khoảng thời gian khác nhau, vì vậy bạn có thể không tìm thấy tất cả dữ liệu từ thời điểm bạn tham gia Facebook. Bạn sẽ không tìm thấy thông tin hoặc nội dung mà bạn đã xóa vì chúng tôi đã xóa nội dung đó khỏi máy chủ của chúng tôi .