2012-02-28 4 views

ответ

1

Я получил это с помощью запроса: -

Facebook *facebook = [[Facebook alloc] initWithAppId:SHKCONFIG(facebookAppId) 
            urlSchemeSuffix:SHKCONFIG(facebookLocalAppId) 
             andDelegate:nil]; 
// ... do authorization stuff 

// when authorized... 
[facebook requestWithGraphPath:@"me" andDelegate:self]; 

и реализации делегата обратного вызова в том же файле: -

- (void)request:(FBRequest *)request didLoad:(id)result 
{ 
    NSString *fbid = [result objectForKey:@"id"]; 
    NSLog(@"facebook ID %@", fbid); 
} 

Это делает работу, но Я не знаю, является ли это рекомендуемой техникой, так как это первый раз, когда я использовал sharekit. Мне кажется странным, что метод singleton [SHKFacebook facebook] является конфиденциальным, и вам нужно создать экземпляр объекта самостоятельно.

+0

Да, это то, что я закончил делать, это работает. Спасибо! – ordinaryman09

1

ShareKit имеет встроенный метод для этого:

[SHKFacebook getUserInfo]; 

Я предпочитаю называть это используя свой собственный переменный-член и проверку возвращаемых значений внутри SHKShareDelegate обратного вызова:

SHKItem *item = [[[SHKItem alloc] init] autorelease]; 
item.shareType = SHKShareTypeUserInfo; 
[self.shkFacebook setItem:item]; 
[self.shkFacebook share]; 

Вот обратный вызов в делегат метод shareFinishedSending():

if ([sharer isEqual:self.shkFacebook] && 
    sharer.item.shareType == SHKShareTypeUserInfo) { 
    NSDictionary *facebookUserInfo = [[NSUserDefaults standardUserDefaults] objectForKey:@"kSHKFacebookUserInfo"]; 
    NSLog(@"id: %@", [facebookUserInfo objectForKey:@"id"]); 
    NSLog(@"name: %@ %@", [facebookUserInfo objectForKey:@"first_name"], [facebookUserInfo objectForKey:@"last_name"]); 
    NSLog(@"email: %@", [facebookUserInfo objectForKey:@"email"]); 
} 
Смежные вопросы