2012-05-04 32 views
5

Tôi đang cố gắng kéo vị trí hiện tại của tất cả bạn bè của người dùng trên facebook và đang gặp phải vấn đề tò mò trong đó một số bạn bè đó đang đọc NULL khi tôi có thể thấy trên các trang Facebook thực tế của họ có nội dung là "Sống ở ,". Phần khó khăn của lỗi này là nó chỉ xảy ra trên có lẽ ~ 30% các trường hợp. Trên các trường hợp còn lại, nó kéo tất cả thông tin chính xác, thông báo cho tôi rằng các quyền có thể được thiết lập chính xác.FB Graph/FQL: Current_location của bạn bè đôi khi đọc Null khi trang FB hiển thị vị trí

Để cụ thể, mã FQL Tôi đang sử dụng là:

SELECT uid, 
     name, 
     current_location 
FROM USER 
WHERE uid IN (SELECT uid2 
       FROM friend 
       WHERE uid1 = Me()) 

Vấn đề này tương tự đã phát sinh khi thực hiện yêu cầu javascript trực tiếp đến đồ thị, vì vậy nó không xuất hiện là một vấn đề FQL một trong hai. Có ai biết tại sao current_location có thể đôi khi không thành công và báo cáo NULL, nhưng không phải lúc nào?

Cảm ơn bạn.

Trả lời

0

Có 2 khả năng; Các bạn bè của người dùng có CURRENT_LOCATION null:

1) Không xác định vị trí hiện tại của họ trong hồ sơ cá nhân facebook của họ

2) Họ xác định vị trí hiện tại trong hồ sơ cá nhân facebook của họ, nhưng thiết lập riêng tư của họ phủ nhận bạn thấy nó

+0

này là một trong những tình huống có thể nếu tôi có thể nhìn thấy vị trí hiện tại của họ khi Tôi đi đến trang facebook thực tế của họ? Nó liệt kê trong phần thông tin của họ "Sống trong ...", và các biểu đồ API báo cáo NULL trong current_location. Có hai quyền riêng biệt để xem vị trí hiện tại trong tiểu sử, nhưng không phải thông qua API biểu đồ không? –

+0

Có điều gì đó còn hơn thế nữa. Đôi khi một ứng dụng có quyền thích hợp và người dùng có thể nhìn thấy nó, nhưng ứng dụng thì không. – Leopd

2

Cài đặt bảo mật có mức ưu tiên cao hơn facebook api.

Nếu người dùng đã hạn chế thông tin cụ thể từ cài đặt bảo mật, bạn sẽ không thể tìm nạp bằng facebook api (đồ thị, fql, phần còn lại) ngay cả khi người dùng cấp quyền cho điều đó.

ví dụ:

Nếu tôi đã hạn chế chia sẻ ngày sinh của tôi trong cài đặt bảo mật, sẽ không có ứng dụng nào có thể lấy sinh nhật của tôi ngay cả khi họ yêu cầu.

Ngoài ra, người dùng có thể hạn chế các ứng dụng nhận được thông tin cụ thể.

ví dụ: Người dùng có thể cho phép ứng dụng xyz truy cập mọi thứ họ muốn nhưng đồng thời người dùng có thể hạn chế ứng dụng xyz để truy cập vị trí của mình

Tôi hy vọng điều này sẽ trả lời câu hỏi của bạn.

+0

Có, người dùng FB có thể hạn chế người dùng nào có thể xem thông tin nào. Nhưng điều này không giải thích tại sao người dùng có thể xem thông tin trong facebook.com không thể thấy thông tin đó thông qua một ứng dụng có quyền phù hợp. – Leopd

+1

Tôi thực sự tình cờ gặp câu trả lời trong khi khám phá cài đặt bảo mật. Có vẻ như Facebook có cài đặt bảo mật riêng cho người dùng và ứng dụng. Cụ thể, khóa là: Cài đặt bảo mật -> Quảng cáo, ứng dụng và trang web -> Cách mọi người đưa thông tin của bạn vào ứng dụng họ sử dụng. Tôi tin rằng điều này có thể mặc định đối với việc không chia sẻ, điều này sẽ thể hiện một vấn đề khá lớn đối với bất kỳ ai muốn truy cập thông tin của bạn bè trong ứng dụng. –

+0

Yeap, như tôi đã nói ở điểm cuối cùng của mình, người dùng có thể hạn chế các ứng dụng nhận được thông tin cụ thể. Vì vậy, người dùng có thể xem thông tin của anh ấy trên facebok chứ không phải ứng dụng. Ngoài ra, người dùng chỉ có thể chia sẻ thông tin với người dùng cụ thể chứ không phải với tất cả người dùng – Jashwant

0

Tôi có cùng một vấn đề.

Tôi đã kiểm tra hai người dùng khác nhau là bạn của tôi.

Trong cả hai trường hợp FQL truy vấn như:

select uid, first_name, name, birthday, birthday_date, current_address, current_location, hometown_location, sex from user where uid in (select uid2 from friend where uid1 = me() 

lợi nhuận null cho home_location.

Tôi đã kiểm tra cả hai tài khoản và vị trí nhà đều có thể truy cập được cho tất cả (cả cài đặt bảo mật và quyền riêng tư của ứng dụng).

Mã thông báo truy cập của tôi bao gồm tất cả các quyền bắt buộc (vị trí nhà được hiển thị cho những người bạn khác).

Sau đó, tôi chạy FQL console với truy vấn:

select uid, first_name, name, birthday, birthday_date, current_address, current_location, hometown_location, sex from user where uid = nnnn 

là chủ sở hữu và kết quả là:

  • Chủ đầu tư về đến nhà vị trí.
  • Trên tab trình duyệt Bảng điều khiển FQL cũ của tôi - vẫn không có vị trí nhà riêng.
  • Trên tab trình điều khiển FQL mới của tôi - Tôi đã nhận được vị trí nhà riêng.

Sau một thời gian tôi nhận được vị trí nhà trên bảng điều khiển FQL cũ.

Nhưng các truy vấn cũ vẫn không trả về vị trí nhà ...

Dường như một số vấn đề về bộ nhớ đệm trên FB.

0

Vấn đề tương tự ở đây. Tôi có thể lấy current_location hoặc hometown_location cho NONE của bạn bè của tôi. Đối với hầu hết trong số họ, tôi có thể dễ dàng nhìn thấy nó bằng cách truy cập vào hồ sơ của họ mặc dù. Quyền ứng dụng friends_location và friends_hometown được đặt.

0

Hãy thử truy vấn này để có được vị trí hiện tại của bạn bè

SELECT first_name,uid, last_name, current_location.name 
FROM user 
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND current_location 

Cũng u sẽ cần friends_location phép chạy truy vấn

Các vấn đề liên quan