Facebook опубликовать на стене, он принимает два запроса в первый раз в IPhone? - PullRequest
1 голос
/ 12 декабря 2011

Я использую Facebook API для обмена Facebook. Я использую

[диалоговое окно self.facebook: @ "feed" иParams: params andDelegate: self];

при нажатии кнопки. Но в первый раз всплывающее окно отображается, но сразу же закрывается. В консоли отображается ошибка. Проблема здесь в том, что одновременно открывается два запроса. Эти запросы тоже одинаковы. Но во второй раз он открывается нормально (без проблем и без ошибок). Как проигнорировать это и открыть только один запрос в первый раз?.

1 Ответ

0 голосов
/ 12 декабря 2011

Вы авторизуете пользователя непосредственно перед отображением диалогового окна?Я помог другому парню, у которого была такая же проблема некоторое время назад: Facebook iOS SDK - Странные эффекты при записи в статус

В этом случае авторизация и отображение диалогового окна сработаютдиалог для отображения.Вы должны быть уверены, что будете делать только по одному за раз (аутентифицироваться> ждать успеха> показывать канал).

РЕДАКТИРОВАТЬ: Это в значительной степени, как я это делаю:

MyClass.h

Переменная экземпляра, в которой я сохраняю объект для совместного использования (если требуется авторизация):

MyObject *_objectToShare;
...
@property (nonatomic, retain) MyObject *objectToShare; // @synthesized in MyClass.m

MyClass.m

Метод, используемый для совместного использования объекта (через NSNotification):

/**
 * Method invoked to share an object on Facebook.
 */
- (void)shareObject:(NSNotification *)note {

    // show dialog if authorized, otherwise authenticate first
    if ([_facebook isSessionValid]) {
        // Use Facebook share dialog
        NSMutableDictionary *params = [NSMutableDictionary dictionary]; // define key-value params to send to FB

        // show feed dialog
        [_facebook dialog:@"feed" andParams:params andDelegate:self];

        // Clear object to share (as it's been shared now)
        self.objectToShare = nil;
    }
    else {
        // authorize with defined permissions
        [_facebook authorize:[NSArray arrayWithObjects:@"publish_stream", @"publish_actions", nil]]; // the permissions you need (@see http://developers.facebook.com/docs/reference/api/permissions/)

        // save a reference to the track to share (after auth is done)
        self.objectToShare = channel;
    }

}

Объект доступен, когда пользователь авторизован Facebook:

/**
 * From FBSessionDelegate. Invoke method to share object if any is defined.
 */
- (void)fbDidLogin {
    // share queued object if it's defined
    if (self.objectToShare) {
        [self shareObject:nil]; // don't pass any notification
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...