Извлечь текущее имя пользователя facebook с помощью iOS SDK 4

Я использую Graph API для получения информации о пользователе facebook следующим образом:

[facebook requestWithGraphPath:@"me" andDelegate:self];

Как я могу это сделать? Я знаю, что ответ сервера имеет форму объекта JSON, но не знаю, как его анализировать.


person WaJiyaz    schedule 23.02.2011    source источник


Ответы (2)


Я ответил на этот вопрос здесь Как получить Facebook ответ с помощью Facebook iOS SDK

person Yogesh    schedule 04.03.2011
comment
Спасибо, Йогеш, за ответ. Но я уже попробовал то, что вы сказали. Я получаю ошибку аутентификации при извлечении информации. Я задал отдельный вопрос для этой конкретной проблемы. Вы можете ответить, если вы можете решить его. - person WaJiyaz; 06.03.2011
comment
@WJK, какую ошибку вы получаете, где вы разместили вопрос, если вы можете опубликовать какой-нибудь код, может быть, я смогу вам помочь, так как сначала я боролся, а затем, потратив много времени, теперь все работает для меня. Надеюсь, я смогу вам помочь. - person Yogesh; 06.03.2011
comment
Это будет очень мило с вашей стороны. Вот вопрос, который включает код и ошибка. Спасибо - person WaJiyaz; 06.03.2011

Я не нахожу ссылки, которые помогли мне решить эту проблему.

Это код, который я использовал (request:didLoad: обратный вызов FBRequestDelegate):

- (void)request:(FBRequest *)request didLoad:(id)result {
if ([result isKindOfClass:[NSDictionary class]]) {

    NSDictionary* hash = result;

    NSString *username = (NSString*)[hash valueForKey:@"name"];

    [[NSUserDefaults standardUserDefaults] setObject:username forKey:@"Username"];
}
[self publishStream]; // publishStream is a custom methods of mine to create the post to publish
};

Я помню, что читал код FB ios API и, возможно, это и это

Я надеюсь, что это работает для вас.

Пока,

Фрэн

person Sefran2    schedule 23.02.2011
comment
Привет, я пробовал, но в didLoadRawResponse выдается исключение OAuthException: для запроса информации о текущем пользователе необходимо использовать токен активного доступа. Итак, я думаю, он не достигает запроса didLoad. Facebook iOS SDK 4 автоматически определяет текущий логин пользователя, и даже после авторизации приложения facebook требуется ли дополнительная авторизация для доступа к имени пользователя? И как? - person WaJiyaz; 02.03.2011
comment
Вызывается fbDidLogin? У меня была проблема, когда fbDidLogin никогда не вызывался с последним API, поэтому я нашел API fb October и решил. Когда вызывается fbDidLogin, я делаю это [[NSUserDefaults standardUserDefaults] setObject:_facebook.accessToken forKey:@AccessToken]; [[NSUserDefaults standardUserDefaults] setObject:_facebook.expirationDate forKey:@ExpirationDate]; [[NSUserDefaults standardUserDefaults] синхронизировать]; [_facebook requestWithGraphPath:@me andDelegate:self]; - person Sefran2; 02.03.2011
comment
А в viewDidLoad... _facebook = [[Facebook alloc] init]; _facebook.accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@AccessToken]; _facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@ExpirationDate]; _permissions = [[NSArray arrayWithObjects: @publish_stream, @read_stream, @offline_access,nil] сохранить]; - person Sefran2; 02.03.2011
comment
Нет, fbDidLogin не вызывается и может быть потому, что я использую последний API, как вы сказали. Но разве не рекомендуется всегда использовать последний API? Значит, получение октябрьского API решит проблему? Есть ссылка откуда скачать? - person WaJiyaz; 02.03.2011
comment
Да, рекомендуется использовать последнюю версию API. Учтите, что я использую его для всплывающего диалогового окна fb, и с последним API мне не удалось его получить ... веб-представление было открыто, и это было не то, что я хотел. Я думаю, вам следует задать еще один вопрос о вашей конкретной проблеме в stackoverflow или на форуме разработчиков fb. Однако старые API находятся здесь: cl.ly/3PPI - person Sefran2; 02.03.2011
comment
Да, ты прав. Я думал о том же, переходя на форум разработчиков fb. Удивительно, что руководство по такому важному API так расплывчато. Я видел множество людей, застрявших в почти подобных проблемах. И спасибо за ссылку :) - person WaJiyaz; 02.03.2011
comment
Я также борюсь с той же проблемой, я делаю следующее facebook = [[Facebook alloc] initWithAppId:kAppId]; facebook.sessionDelegate = сам; разрешения = [[массив NSArrayWithObjects: @email, @read_stream, @user_birthday, @user_about_me, @publish_stream, @offline_access, nil] сохранить]; а затем я называю это [авторизация facebook: делегирование разрешений: я]; в этот момент вызывается метод fbDidLogin, часть 1 из 2 - person Yogesh; 04.03.2011
comment
но затем, когда я вызываю [facebook requestWithGraphPath:@me andDelegate:self]; Ничего не произошло. Я не знаю, что делать после этого, как мне получить строку json, метод didLoad никогда не вызывается ни при первом вызове аутентификации, ни в requestWithGraphPath. часть 2 из 2 - person Yogesh; 04.03.2011
comment
@Yogesh: я не знаю, может ли это помочь ... Я авторизуюсь с помощью [авторизация в Facebook: разрешения MyFBAppId: делегирование разрешений: я]; где MyFBAppId — это ключ приложения FB, соответствующий моему приложению. - person Sefran2; 05.03.2011
comment
@Fran: у меня все работает, я вставил ссылку ниже для решения. - person Yogesh; 05.03.2011
comment
это отличается от имени пользователя? - person aherlambang; 29.03.2012