2013-02-12 66 views
1

我試圖在兩天內爲我的問題找到解決方案。我想說什麼,我敢肯定我讀過所有的資源,你可以給我一個鏈接=) 問題是。我在iOS上使用FacebookSDK 3.1。並試圖讓apprequests對話框...代碼很簡單IOS FacebookSDK apprequests對話框錯誤

session =[[FBSession alloc]initWithAppID:@"XXXXXXXXXXXX" permissions:nil urlSchemeSuffix:@"xxxxxxxxxxxx" tokenCacheStrategy:nil]; 
    [FBSession setActiveSession:session]; 
     [self ShowSessionState:session.state]; 
     NSLog(@"Acces token data: %@",[session accessToken]); 

     [session openWithCompletionHandler:^(FBSession *psession, FBSessionState status, NSError *error) { 
     // NSLog(@"I'm in"); 

     Facebook * facebook = [[Facebook alloc] initWithAppId:@"XXXXXXXXXXXX" urlSchemeSuffix:@"xxxxxxxxx" andDelegate:nil]; 

       [facebook setAccessToken:FBSession.activeSession.accessToken]; 
       [facebook setExpirationDate:FBSession.activeSession.expirationDate]; 

       [facebook dialog:@"apprequests" andDelegate:nil]; 

      }]; 

和所有我所看到的..只是有錯誤幀 - API錯誤代碼:110; Api錯誤描述:無效的用戶ID;錯誤消息:缺少用戶cookie(以驗證會話用戶)。 但是,授權是成功的...我有一個有效的accessToken ..可以讓我的朋友或我自己的FB數據。

正如我所說我已經閱讀了很多資源....而且真的很多人都有同樣的問題,但我沒有找到任何有用的解決方案,這個問題。請幫助我。

回答

0

我找到了解決方案,也許它會幫助別人。事實上,它看起來像驅魔,但工程)所以,問題是:如果你從safary或Facebook應用程序登錄Facebook,那麼你需要讓你從網頁流量記錄的WebView不會保存任何的cookie ...。你可以用FBConnect包來做到這一點(閱讀谷歌更多)。在Facebook.m文件,你需要改變這樣的代碼:

[self authorizeWithFBAppAuth:YES safariAuth:YES]; 

[self authorizeWithFBAppAuth:NO safariAuth:NO]; 

在這種情況下,當您將使用

[facebook authorize:permissions]; 

登錄在網頁視圖來一直和你能使用像apprequests等任何對話框 的一個多問題))登錄對話框不顯示?這是一個更多的Facebook錯誤))爲了解決這個問題,你只需要在延遲時調用它:

[self performSelector:@selector(showFBLoginDialog) withObject:nil afterDelay:1]; 

- (void)showFBLoginDialog { 
    NSArray *permissions = [[NSArray alloc] initWithObjects: 
          @"offline_access", 
          @"publish_actions", 
          @"read_stream", 
          @"user_photos", 
          @"email", 
          @"publish_stream", 
          @"user_likes", 
          @"user_about_me", nil]; 
    [facebook authorize:permissions];  
}