Авторизовать Facebook iOS и опубликовать без диалога?

#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 вызывает это автоматически?