【问题标题】:Getting all my events via Facebook iOS SDK通过 Facebook iOS SDK 获取我的所有活动
【发布时间】:2012-05-25 00:51:15
【问题描述】:

在我的 iOS 应用中,我使用以下代码获取访问令牌:

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

然后我使用以下代码请求我的事件:

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

但作为回应,我只收到我已回复的事件。我想获取我所有的活动,包括那些我没有回复的活动。

有什么想法吗?

【问题讨论】:

    标签: iphone ios facebook sdk


    【解决方案1】:

    使用 /me/events 获取用户已响应的事件,使用 /me/events/not_replied 获取其他事件。

    例如(假设您已经创建了一个会话):

    [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..
    }];
    

    请参阅https://developers.facebook.com/docs/graph-api/reference/v2.0/user/events/ 了解更多信息。

    【讨论】:

      【解决方案2】:

      您可以通过下一个 FQL 查询获取事件列表,无论其 RSVP 状态如何:

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

      这不会返回每个事件的 RSVP 状态,而只会返回事件详细信息。您可能希望使用Batch Requests 来获取事件的详细信息,并使用rsvp_status 来获取相同的查询。

      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}"
        }
      ]
      

      有关您可能希望检索的其他字段的详细信息,请参阅 eventevent_member 表文档。

      注意事项:

      从 7 月 5 日开始,甚至需要访问令牌才能访问公共活动。

      【讨论】:

        【解决方案3】:

        这不是一个完整的解决方案,并且可能不起作用,但请查看是否可以访问用户 Facebook 事件的 iCal 提要。我订阅了我的 iCal 提要,我注意到所有事件,甚至是我尚未回复的新事件都包含在提要中。

        无论如何都要尝试一下!

        【讨论】:

          【解决方案4】:

          请求

          /我/事件

          仅向您提供用户(可能)计划参加的活动。响应不包括用户被邀请(但未响应)或拒绝的事件。

          还有其他可能有帮助的请求:

          您可以检查用户是否被邀请参加这样的活动:

          /EVENT_ID/受邀者/USER_ID

          RSVP状态可以通过事件检查:

          /EVENT_ID/出席

          /EVENT_ID/也许

          /EVENT_ID/拒绝

          /EVENT_ID/受邀

          每个请求都返回具有查询的 RSVP 状态的用户列表。

          【讨论】:

          • 实际上,我用“可能”响应的事件包含在对me/events 请求的响应中。
          • 当心events连接默认为过去两周(使用since/until参数指定所需的时间范围)。
          【解决方案5】:

          我想你可能会通过 fql 查询得到events。你需要试试这个。

          另见How-To: Use the Graph API to Manage Events

          您将需要通过 HTTP 从 Graph API 获取以下内容:

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

          您可以从该调用中取回所有状态。

          {
            "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"
              }
            ]
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-11-15
            • 1970-01-01
            相关资源
            最近更新 更多