在FB请求响应字典中获取空值

时间:2013-11-28 08:32:29

标签: ios objective-c facebook facebook-graph-api

我正在尝试使用以下代码获取已登录的Facebook帐户中的所有相册列表... 但不幸的是,我无法获得任何列表,结果是字典..就像

{
    data =     (
    );
}

知道我在下面的代码中做错了什么......

 FBRequest* friendsRequest = [FBRequest requestForGraphPath:@"me/albums"];

   [friendsRequest startWithCompletionHandler: ^(FBRequestConnection*connection,NSDictionary* result,NSError *error) {
                                                          if(!error)

                                                       {
                                                              NSLog(@"%@",result);
                                                              //NSArray *albums;


                                                          }

这是完整的方法

- (BOOL)retrieveFacebookPhotosWithCompletionBlock:(void (^)(NSArray *, NSError *))completionBlock
{
    //FBSession *activeFBSession=[FBSession activeSession];

    //activeFBSession.state;


    [FBSession openActiveSessionWithReadPermissions:nil
                                       allowLoginUI:YES
                                  completionHandler:^(FBSession *session,
                                                      FBSessionState state,
                                                      NSError *error) {
                                      if (error) {

                                          NSLog(@"Error");
                                      } else if (session.isOpen) {

                                          [[FBRequest requestForMe] startWithCompletionHandler: ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
                                              if (error) {
                                                  //error
                                                  completionBlock(nil, error);
                                              }else{
                                                  FBRequest* friendsRequest = [FBRequest requestForGraphPath:@"me/albums"];

                                                  [friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,NSDictionary* result,NSError *error) {
                                                      if(error)
                                                          completionBlock(nil, error);
                                                      else
                                                      {
                                                          NSLog(@"%@",result);
                                                          //NSArray *albums;


                                                      }
                                                  }];
                                              }
                                          }];

                                      }
                                  }];



        return YES;
}

3 个答案:

答案 0 :(得分:1)

您需要获得“user_photos”的许可才能获取相册。

当我在没有权限的情况下尝试它时,我收到了与您相同的响应。使用graph api explorer

当我获得权限的新access_token时,我收到来自api的正确回复。

答案 1 :(得分:1)

要打开Facebook会话,要访问照片,您需要user_photos权限。请尝试更改以下代码。

[FBSession openActiveSessionWithReadPermissions:
[NSArray arrayWithObjects:@"user_photos",nil] allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
                                         //YOUR CODE
                                           }];

答案 2 :(得分:1)

是的,这是因为您提供的权限。如上所述,您必须通过密钥user_photos授予访问照片的权限。您可以参考facebook SDk提供的示例项目,获取更多密钥和每个提供的特定权限。或者Facebook开发者页面。