2010-11-05 7 views
1

J'utilise l'API Facebook iOS SDK et Facebook Graph. Quand je demande "moi", ce qui devrait renvoyer toutes les propriétés de l'utilisateur actuel, je reçois seulement un petit sous-ensemble de l'objet Utilisateur. Qu'est-ce que je fais mal?Comment puis-je obtenir l'objet utilisateur complet en utilisant Facebook Graph API et facebook ios sdk?

Je ne reçois pas non plus la boîte de dialogue Autoriser/Ne pas autoriser lorsque je me connecte, mais peut-être parce que je suis le propriétaire de l'application?

Dans mon en-tête:

#import <UIKit/UIKit.h> 
#import "Facebook.h" 

@interface FacebookAppViewController : UIViewController <FBRequestDelegate, FBDialogDelegate, FBSessionDelegate> { 
    Facebook* facebook; 
    NSArray* permissions; 

    IBOutlet UILabel* JSONLabel; 
} 

@property (retain, nonatomic) UILabel* JSONLabel; 

- (IBAction)login:(id)sender; 
- (IBAction)logout:(id)sender; 

@end 

Dans ma mise en œuvre:

#import "FacebookAppViewController.h" 

static NSString* apiKey = @""; // with my app ID 

@implementation FacebookAppViewController 

@synthesize JSONLabel; 

- (IBAction)login:(id)sender 
{ 
    [facebook authorize:apiKey permissions:permissions delegate:self]; 
} 

- (void) fbDidLogin 
{ 
    [facebook requestWithGraphPath:@"me" andDelegate:self]; 
} 

- (void)request:(FBRequest*)request didLoad:(id)result 
{ 
    NSString* uid = [result objectForKey:@"id"]; 

    if ([result isKindOfClass:[NSDictionary class]]) 
    { 
     NSString* text = @""; 
     NSDictionary* hash = result; 

     for (NSString* key in hash) 
     { 
      text = [text stringByAppendingFormat:@"\n%@: ", key]; 

      NSObject* value = [hash objectForKey:key]; 
      if (value == nil) 
      { 
       NSLog(@"value is nil"); 
       continue; 
      } 

      if ([value isKindOfClass:[NSString class]]) 
      { 
       NSString* str = value; 
       text = [text stringByAppendingFormat:@"%@", str]; 
      } 
      JSONLabel.text = text; 
     } 
    } 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    facebook = [[Facebook alloc] init]; 
} 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 
     permissions = [[NSArray arrayWithObjects:@"read_stream", @"offline_access", nil] retain]; 
    } 
    return self; 
} 

Répondre

3

Utilisez le paramètre champs et l'un des champs d'utilisateur documentés. @ "me? Fields = id, nom, sexe, ..."

Questions connexes