2012-06-28 1 views
2

Я использую Sharekit для Facebook и Twitter, и я хотел бы получить данные учетной записи Facebook, такие как идентификатор пользователя, имя профиля и т. Д. Предоставьте свои предложения и помощь. У меня были данные раньше, но теперь я не удалось его восстановить.Получение информации о Facebook Facebook

Пожалуйста, найдите код, приведенный ниже,

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"kSHKFacebookUserInfo"]){ 
      NSDictionary *facebookUserInfo = [[NSUserDefaults standardUserDefaults] objectForKey:@"kSHKFacebookUserInfo"]; 
      fbUseremail = [facebookUserInfo objectForKey:@"email"]; 
      NSLog(@"FBid-- %@",fbUseremail); 
     } 
     if ([[NSUserDefaults standardUserDefaults] objectForKey:@"kSHKFacebookUserInfo"]){ 
      NSDictionary *facebookUserInfo = [[NSUserDefaults standardUserDefaults] objectForKey:@"kSHKFacebookUserInfo"]; 
      fbUserName = [facebookUserInfo objectForKey:@"name"]; 
      NSLog(@"FBName-- %@",fbUserName); 
     } 

Теперь он получает разбился, как facebookUserInfo является NULL.

+0

Обратитесь по ссылке https://github.com/ShareKit/ShareKit/issues/184 – Ramz

+0

@RamkumarThiyyakat я попытался это решение, но не изменение :( – ishhhh

ответ

0

Вы можете использовать API-интерфейс Facebook для получения имени пользователя. Добавьте метод ниже в класс FBSession.m пакета FBConnect.

#import "JSON.h" 

...........

static NSString *const kGraphAPIURL = @"https://graph.facebook.com/"; 
//static NSString *const kFBGraphAPIUserName = @"name"; 

...........

// Get user name via Facebook GraphAPI. 

- (NSString *)getUserNameByUID:(FBUID)aUID { 

NSString *userName_ = nil; 

NSURL *serviceUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@%qi", kGraphAPIURL, aUID]]; 

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 

NSError *error = nil; 
NSString *jsonString = [NSString stringWithContentsOfURL:serviceUrl encoding:NSUTF8StringEncoding error:&error]; 

if (error != nil) { 
    NSLog(@"######### error: %@", error); 
} 

if (jsonString) { 

    // Parse the JSON into an Object and 
    // serialize its object to NSDictionary 
    NSDictionary *resultDic = [jsonString JSONValue]; // U have resultDic with information 

    //if (resultDic) { 
     //userName_ = [resultDic valueForKey:kFBGraphAPIUserName]; 
    //} 
} 

[UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 

return userName_; 
} 
1

Я просто попытался его с демонстрационное приложение, и это сработало хорошо. Чтобы найти, что происходит, вы можете сделать перерыв в SHKFacebook.m - (void)request:(FBRequest *)fbRequest didLoad:(id)result, строка 411. Теперь вы можете видеть, что вы возвращаетесь из Facebook.

Чтобы получить информацию о пользователе, вы должны сначала извлечь его из Facebook:

SHKItem *item = [[SHKItem alloc] init]; 
item.shareType = SHKShareTypeUserInfo; 
[SHKFacebook shareItem:item];