#iphone #objective-c #ios #facebook
#iPhone #objective-c #iOS #Facebook
Вопрос:
Я только начинаю с Facebook SDK для iOS и тщательно проверил документацию и другую справку, но не могу добиться успеха.
Я запустил новое приложение на основе просмотра и авторизовался так, как рекомендовано в документах. Каждый раз, когда я запускаю приложение, оно переключается на приложение Facebook (которое я установил на свой iPhone) и сообщает, что уже авторизовано, нажмите ok. Как я могу остановить повторное выполнение этого?
Я также пробовал публиковать на Facebook без диалога. Консоль сообщает мне, что запрос выполнен, но затем возникает ошибка (не сбой, но мне сообщает didFailWithError).
В любом случае, я не публиковал ни одного своего кода, поскольку он кажется относительно простым, поэтому, если есть кто-то, кто знает, как это сделать, я был бы очень признателен за любую помощь и, возможно, даже за образец кода.
Спасибо.
Комментарии:
1. Эй, можно ли обмениваться изображениями без диалога?? Пожалуйста, верните как можно скорее
Ответ №1:
Вы упускаете ключевой момент в вашем делегате, вы должны сохранить данные сеанса самостоятельно
- (void)fbDidLogin {
// store the access token and expiration date to the user defaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:facebook.accessToken forKey:ACCESS_TOKEN_KEY];
[defaults setObject:facebook.expirationDate forKey:EXPIRATION_DATE_KEY];
[defaults synchronize];
}
И затем, когда вы инициализируете facebook, вы должны сделать следующее
facebook = [[Facebook alloc] initWithAppId:kAppId];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
facebook.accessToken = [defaults objectForKey:ACCESS_TOKEN_KEY];
facebook.expirationDate = [defaults objectForKey:EXPIRATION_DATE_KEY];
И, наконец, если вы хотите опубликовать без диалога, вы должны сделать это
NSString *message = @"Visit my blog http://effectivemobility.blogspot.com/";
NSArray *obj = [NSArray arrayWithObjects:message, nil];
NSArray *keys = [NSArray arrayWithObjects:@"message", nil];
// There are many other params you can use, check the API
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjects:obj forKeys:keys];
[facebook requestWithGraphPath:@"me/feed" andParams:params andHttpMethod:@"POST" andDelegate:nil];
Я надеюсь, что это поможет
Комментарии:
1. Я добавил немного о публикации без диалога к своему ответу
2. Отличный блог и руководство по просмотру таблиц. На самом деле может использовать это. Безуспешно при отсутствии кода публикации диалога, он не завершается сбоем, но ничего не делает. Также, чтобы убедиться, что я правильно выполняю авторизацию, я скопировал ваш код, но получаю ошибки, в которых говорится, что ключи сделаны: объявлены ACCESS_TOKEN_KEY и EXPIRATION_DATE_KEY. Конечно, они не должны быть такими, поскольку мы просто создаем ключ?
3. Я получаю эту ошибку, возвращающуюся при попытке опубликовать: ошибка facebookErrDomain 10000
4. ACCESS_TOKEN_KEY и EXPIRATION_DATE_KEY являются константами. Вы должны определить их где-нибудь в своем коде. Что-то вроде #define EXPIRATION_DATE_KEY @»ExpKey»
5. Последний вопрос. Метод fbDidLogin, нужно ли мне вызывать это, или делегат Facebook вызывает это автоматически?