2014-12-30 4 views
0

У меня возникла проблема. когда я зарегистрировал учетную запись Facebook в своем приложении. Во время 1-го сообщения я получаю этот ответ FBSession, он отлично работает и публикует на FBWall normaly.session.state FBSessionStateCreated не размещается на стене fb в ios

FBSESSION <FBSession: 0x1c31bbc0, state: FBSessionStateCreatedTokenLoaded, loginHandler: 0x0, appID: 524460600950223, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x176c99b0>, expirationDate: 2015-02-27 10:42:15 +0000, refreshDate: 2014-12-30 06:24:28 +0000, attemptedRefreshDate: 0000-12-30 00:00:00 +0000, permissions:(
"create_note", 
"basic_info", 
"share_item", 
"read_stream", 
"status_update", 
"publish_actions", 
"user_friends", 
"publish_checkins", 
"video_upload", 
"export_stream", 
"publish_stream", 
"photo_upload", 
installed, 
email, 
"public_profile", 
"user_birthday", 
"user_status" 
)> 

от 2-я раза, начиная я выкладываю я получаю FBSession, как это показано на ниже его не размещения на FBWall

FBSESSION <FBSession: 0x1d05fac0, state: FBSessionStateCreated, loginHandler: 0x0, appID: 524460600950223, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x176c99b0>, expirationDate: (null), refreshDate: (null), attemptedRefreshDate: 0000-12-30 00:00:00 +0000, permissions:(null)> 

//This will happens at the time of Loginwithfacebook account... otherwise it will work fine 
//can any one help me. Thanks in advance 

ответ

0

Я получил гуманный. Нет необходимости проверять сессию, если мы вошли с facebook счет .. Только после того, что у хочу

FBSession *session = [[FBSession alloc] init]; 

NSLog(@"FBSESSION %@", session); 

if (session.state == FBSessionStateCreatedTokenLoaded || session.state == FBSessionStateOpen) 
{ 

    [[[[iToast makeText:@"Post on wall success"] setGravity:iToastGravityBottom] setDuration:iToastDurationShort]show]; 
    // even though we had a cached token, we need to login to make the session usable 
    [session openWithCompletionHandler:^(FBSession *session, 
             FBSessionState status, 
             NSError *error) { 
     [FBSession setActiveSession:session]; 
     [FBRequestConnection startWithGraphPath:@"/me/feed" 
            parameters:params 
            HTTPMethod:@"POST" 
           completionHandler:^(FBRequestConnection *connection, id result, NSError *error){ 
            NSLog(@"error-- %@",error); 
           }]; 
    }]; 
} 

Ранее мой код, как это показано в приведенном выше

Я просто добавил еще части к вышесказанному код будет работать правильно. Моя проблема будет решена.

else 
{ 

[[[[iToast makeText:@"Post on wall success"] setGravity:iToastGravityBottom] setDuration:iToastDurationShort]show]; 
[FBRequestConnection startWithGraphPath:@"/me/feed" 
          parameters:params 
          HTTPMethod:@"POST" 
         completionHandler:^(FBRequestConnection *connection, id result, NSError *error){ 
          NSLog(@"error-- %@",error); 
         }]; 
} 
0

следующая строка в коде должна быть изменено:

if (session.state == FBSessionStateCreatedTokenLoaded || session.state == FBSessionStateOpen) 

в

if (session.state == FBSessionStateCreatedTokenLoaded || session.state == FBSessionStateCreated) 

Если состояние сеанса уже открыто, то ISN; т есть необходимость открыть FBSession снова.

Если сеанс создан или загружен токен, вам нужно будет снова открыть сеанс.