2012-05-17 24 views
14

Trong ứng dụng iOS của tôi, tôi nhận được một access token sử dụng đoạn mã sau:Bắt tất cả các sự kiện của tôi qua Facebook iOS SDK

[self.facebook authorize:[NSArray arrayWithObjects:@"user_events", 
@"friends_events", nil]]; 

sau đó tôi yêu cầu sự kiện của tôi với đoạn mã sau:

[self.facebook requestWithGraphPath:@"me/events" andDelegate:friendsVC]; 

Nhưng như một phản ứng, tôi chỉ nhận được các sự kiện tôi đã trả lời. Tôi muốn nhận tất cả các sự kiện của mình bao gồm những sự kiện mà tôi chưa trả lời.

Bất kỳ ý tưởng nào?

Trả lời

2

Bạn có thể lấy danh sách các sự kiện bất kể trạng thái trả lời của họ với truy vấn FQL tiếp theo:

SELECT eid, name, venue, location, start_time FROM event WHERE eid IN (
    SELECT eid from event_member WHERE uid = me() 
) 

này sẽ không trở lại trạng thái trả lời cho mỗi sự kiện nhưng chỉ sự kiện chi tiết. Bạn có thể muốn sử dụng Batch Requests để nhận cả chi tiết về sự kiện và rsvp_status cùng một truy vấn.

https://graph.facebook.com/?method=post&batch=[ 
    { 
    "name":"rsvp", 
    "relative_url":"fql?q=SELECT+eid,rsvp_status+FROM+event_member+WHERE+uid=me()", 
    "omit_response_on_success":false 
    }, 
    { 
    "relative_url":"?ids={result=rsvp:$.data.*.eid}" 
    } 
] 

Xem eventevent_member tài liệu bảng để biết chi tiết về các trường khác bạn có thể muốn truy xuất.

Ghi chú:

Bắt đầu từ 05 tháng bảy, một thẻ truy cập sẽ được yêu cầu để truy cập vào các sự kiện thậm chí cộng đồng.

6

Yêu cầu

/me/sự kiện

chỉ mang đến cho bạn những sự kiện một người dùng là (có thể) lập kế hoạch để tham dự. Phản hồi không bao gồm các sự kiện mà người dùng đã được mời (nhưng không được trả lời) hoặc bị từ chối.

Có các yêu cầu khác mà bạn có thể giúp đỡ:

Bạn có thể kiểm tra xem người dùng đã được mời tham gia một sự kiện như vậy:

/EVENT_ID/mời/USER_ID

Trạng thái RSVP có thể được kiểm tra theo sự kiện:

/EVENT_ID/tham dự

/EVENT_ID/lẽ

/EVENT_ID/giảm

/EVENT_ID/mời

nơi mỗi yêu cầu trả về một danh sách người dùng với các trạng thái trả lời truy vấn.

+0

Thực ra, các sự kiện tôi đã trả lời bằng "Có thể" được bao gồm trong phản hồi cho yêu cầu 'tôi/sự kiện'. – sentinel

+0

Hãy coi chừng kết nối 'sự kiện' * mặc định trong hai tuần qua * (sử dụng tham số' since'/'until' để chỉ định phạm vi thời gian mong muốn). –

0

Tôi nghĩ bạn có thể nhận được events bằng truy vấn fql. Bạn cần phải thử điều này.

Cũng thấy điều này How-To: Use the Graph API to Manage Events.

Bạn sẽ cần phải HTTP Get sau từ API Graph:

fql?q=SELECT uid,eid,rsvp_status FROM event_member WHERE uid = me()

Bạn có thể lấy lại tất cả các trạng thái từ cuộc gọi đó.

{ 
    "data": [ 
    { 
     "uid": "723020003", 
     "eid": "19935786340002", 
     "rsvp_status": "not_replied" 
    }, 
    { 
     "uid": "723020003", 
     "eid": "234524000290351", 
     "rsvp_status": "attending" 
    }, 
    { 
     "uid": "723020003", 
     "eid": "210091000081240", 
     "rsvp_status": "declined" 
    }, 
    { 
     "uid": "723020003", 
     "eid": "210091000341240", 
     "rsvp_status": "unsure" 
    } 
    ] 
} 
0

Đây không phải là giải pháp hoàn chỉnh và điều này có thể không hiệu quả, nhưng xem liệu có thể truy cập nguồn cấp dữ liệu iCal của các sự kiện Facebook của người dùng hay không. Tôi đăng ký nguồn cấp dữ liệu iCal của mình và tôi nhận thấy rằng tất cả các sự kiện, ngay cả những sự kiện mới mà tôi chưa trả lời đều được bao gồm trong nguồn cấp dữ liệu.

Có điều gì đó cần thử!

0

Sử dụng /me/sự kiện để nhận được sự kiện người dùng đã trả lời, và /me/sự kiện/not_replied cho những người khác.

Ví dụ (giả sử bạn đã tạo ra một phiên):

[FBRequestConnection startWithGraphPath:@"/me/events/not_replied" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
{ 
    FBGraphObject* data = (FBGraphObject*)result; 
    NSMutableArray* array = [data objectForKey:@"data"]; 

    //parse data etc.. 
}]; 

Xem https://developers.facebook.com/docs/graph-api/reference/v2.0/user/events/ để biết thêm.

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