Hi i want to get the Facebook user's UID from ACAccountStore in iOS 6
    self.accountStore = [[ACAccountStore alloc]init];
    ACAccountType *FBaccountType= [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
    NSString *key = @"01234567890123";
    NSDictionary *dictFB = [NSDictionary dictionaryWithObjectsAndKeys:key,ACFacebookAppIdKey,@[@"email"],ACFacebookPermissionsKey, nil];
        [self.accountStore requestAccessToAccountsWithType:FBaccountType options:dictFB completion:
         ^(BOOL granted, NSError *e) {
             if (granted) {
                 NSArray *accounts = [self.accountStore accountsWithAccountType:FBaccountType];
                 //it will always be the last object with single sign on
                 self.facebookAccount = [accounts lastObject];
                 //i Want to get the Facebook UID and log it here
                 NSLog(@"facebook account =%@",self.facebookAccount);
             } else {
                 //Fail gracefully...
              NSLog(@"error getting permission %@",e);
             }
         }];
self.facebookAccount has UID, but i am unable to get it...
I wanted to get the UID without using the Facebook API. It can done by using the following method
    self.accountStore = [[ACAccountStore alloc]init];
    ACAccountType *FBaccountType= [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
    NSString *key = @"01234567890123";
    NSDictionary *dictFB = [NSDictionary dictionaryWithObjectsAndKeys:key,ACFacebookAppIdKey,@[@"email"],ACFacebookPermissionsKey, nil];
        [self.accountStore requestAccessToAccountsWithType:FBaccountType options:dictFB completion:
         ^(BOOL granted, NSError *e) {
             if (granted) {
                 NSArray *accounts = [self.accountStore accountsWithAccountType:FBaccountType];
                 //it will always be the last object with single sign on
                 self.facebookAccount = [accounts lastObject];
                 //i  got the Facebook UID and logged it here (ANSWER)
                  NSLog(@"facebook account =%@",[self.facebookAccount valueForKeyPath:@"properties.uid"]);
             } else {
                 //Fail gracefully...
              NSLog(@"error getting permission %@",e);
             }
         }];
You need to call the Facebook Graph API; use the SLRequest as follows:
NSUrl requestURL = NSUrl.FromString("https://graph.facebook.com/me"); 
SLRequest sl = SLRequest.Create(SLServiceKind.Facebook, SLRequestMethod.Get, requestURL, null);
sl.Account = // your ACAccount object here
sl.PerformRequest((data, response, error) => {
    if (error == null) {
        // success! parse response
    }
    else {
        // handle failure
    }
});
That should do it!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With