【问题标题】:Facebook Request Never Gets ExecutedFacebook 请求永远不会被执行
【发布时间】:2013-08-19 09:07:54
【问题描述】:

我正在尝试获取也使用相同应用的用户的 Facebook 好友。

“是时候让其他使用此应用的朋友了”总是打印出来

但是结果和错误都没有打印出来

我使用 Facebook 的 Graph API 资源管理器检查了图形路径,它有效,但由于某种原因它不适用于我的应用程序。

- (void)getFriendsForUser:(NSNotification *)notification {
    GGUser *theCurrentUser = [notification object];
    NSLog(@"Time to get other friends that use this app");
    [FBRequestConnection startWithGraphPath:@"me/friends?fields=id,name,installed,picture" parameters:nil HTTPMethod:@"GET" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
        NSLog(@"result %@",result);
        NSLog(@"error - %@", error);            
    }];
}

其他 FBRequests,比如带有@“me”的图形路径,可以工作,只是不是这个。我究竟做错了什么?我该如何解决这个问题?

【问题讨论】:

    标签: ios objective-c facebook cocoa-touch facebook-ios-sdk


    【解决方案1】:

    您似乎没有传递令牌,这就是请求本身没有被执行的原因:

    这样做:

    FBRequest *facebookReq =  [FBRequest requestForGraphPath:@"me/friends?fields=id,name,installed,picture"];
    
    [facebookReq setSession:FBSession.activeSession];
    
    [facebookReq startWithCompletionHandler:^(FBRequestConnection *connection,
                                              id result,
                                              NSError *error) {
        NSLog(@"result %@",result);
    
        NSLog(@"error %@",error);
    
    }];
    

    如果它不起作用,请告诉我。 :)

    干杯

    【讨论】:

    • 这看起来应该可以工作,并且可能对大多数人都有效,但不幸的是不适用于我的应用程序,我不确定它出了什么问题,但这段代码看起来是正确的。 +1 努力!但遗憾的是没有复选标记,因为它不适用于我的应用程序。
    • 你有令牌吗?你在你的应用中使用 FBSessions 吗?
    • 是的。我遵循了 Facebook SDK 中给出的所有说明。
    • 尝试切换到最新的SDK 3.7.1,这可能是内部错误,切换到新的sdk应该优先这个随机的东西。
    • 大约 40% 的时间都在工作,所以不是很可靠,我对出了什么问题有点困惑,不过感谢您的努力!
    【解决方案2】:

    我认为您的问题是您将请求参数放入路径中。

    尝试只使用@"me/friends" 作为路径,并使用@{ @"fields", @"id,name,installed,picture" } 作为参数。

    【讨论】:

    • 不工作的时候有没有打印错误?
    • 不,没有错误,FBRequest 永远不会发生,或者至少它永远不会到达完成块,什么可能阻止它发生?
    【解决方案3】:

    下面的代码应该没问题。但请确保您在主线程上执行它。

    看起来并不是每个线程都可用于 FBRequest。我个人在从核心数据上下文线程开始请求时遇到问题。

    NSString* path = @"me/friends?fields=id,name,installed,picture";
    FBRequest* req = [[FBRequest alloc] initWithSession:[FBSession activeSession]
                                              graphPath:path];
    [req startWithCompletionHandler:^(FBRequestConnection* connection,
                                      NSDictionary<FBGraphObject>* result,
                                      NSError* error)
    {
        NSLog(@"result %@",result);
        NSLog(@"error %@",error);
    }
    

    【讨论】:

      猜你喜欢
      • 2019-12-07
      • 2021-08-19
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多