2012-11-01 38 views
5

Tôi đang cố truy xuất dữ liệu sinh nhật của bạn bè trên facebook, nhưng nó trả về giá trị rỗng. Tôi đang sử dụng mã này:iOS Facebook SDK 3.1 Truy xuất sinh nhật bạn bè trả về số

FBRequest* friendsRequest = [FBRequest requestForMyFriends]; 
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection, 
            NSDictionary* result, 
            NSError *error) { 
    NSArray* friends = [result objectForKey:@"data"]; 
    NSLog(@"Found: %i friends", friends.count); 
    for (NSDictionary<FBGraphUser>* friend in friends) { 
     NSLog(@"I have a friend named %@ - birthday %@", friend.name, friend.birthday); 
    } 
}]; 

Tên của bạn bè là ok, nhưng người bạn sinh nhật hoặc tất cả dữ liệu đó không phải là một trong những dữ liệu cơ bản bạn đang trở lại null. Lưu ý tôi đã thêm user_birthday và friends_birthday quyền trong trang ứng dụng facebook.com và trong phương pháp openSession (đăng nhập):

- (void)openSession 
{ 

    NSArray *permissions = [[NSArray alloc] initWithObjects: 
          @"user_birthday", 
          @"friends_birthday", 
          nil]; 


    [FBSession openActiveSessionWithReadPermissions:permissions 
             allowLoginUI:YES 
            completionHandler: 
    ^(FBSession *session, 
     FBSessionState state, NSError *error) { 
     [self sessionStateChanged:session state:state error:error]; 
    }]; 
} 

Cần giúp đỡ ở đây, tôi đã cố gắng tất cả mọi thứ.

Trả lời

35

Tôi có cùng một vấn đề và tôi giải quyết theo cách này.

  • Trước hết, hãy đảm bảo rằng bạn có quyền chính xác.

    NSArray *permissions = @[@"user_birthday", @"friends_hometown", 
             @"friends_birthday", @"friends_location"]; 
    [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:YES completionHandler: ..... 
    
  • Sau đó, KHÔNG SỬ DỤNG requestForMyFriends. Tôi cố gắng bằng nhiều cách (thay đổi FBRequest và loại thứ

  • Kiểm tra các điều khoản và chắc chắn rằng đó là các điều khoản mà bạn cần.

    NSLog(@"permissions::%@",FBSession.activeSession.permissions); 
    
  • Bây giờ tạo ra FBRequest theo cách này.

    FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?fields=name,picture,birthday,location"]; 
    [ friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 
        NSArray *data = [result objectForKey:@"data"]; 
        for (FBGraphObject<FBGraphUser> *friend in data) { 
         NSLog(@"%@:%@", [friend name],[friend birthday]); 
    }}]; 
    

cuối cùng tôi nhận được dữ liệu này. tôi hy vọng nó giúp bạn

+0

@ jgorozco- cảm ơn một âm. Bạn giải quyết vấn đề rất lớn của tôi. – stack

+0

đây là sự cố khi viết mã sau [FBSession openActiveSessionWithReadPermissions: permission allowLoginUI: YES completionHandler: ..... Vấn đề là phương thức "loginViewFetchedUserInfo" liên tục được gọi .. vì vậy tôi xóa mã và ứng dụng đó hoạt động tốt – g212gs

+0

Bây giờ tôi đang sử dụng iOS Facebook SDK 3.2 và không thể có được danh sách bạn bè. Tôi có thể mời bạn bè cũng như tôi có thể kết bạn được sử dụng cùng một ứng dụng nhưng không thể có được danh sách bạn bè của tôi. Có sự thay đổi nào từ phía bên facebook không? – UserDev

2

Trong v2.0 của API đồ thị, bạn không thể nhận được ngày sinh nhật của một người bạn của người đó - sự cho phép friends_birthday đã không được chấp nhận.

Đọc thêm về những thay đổi này tại đây: https://developers.facebook.com/docs/apps/changelog

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