2012-08-16 39 views
4

我使用的是最新的Facebook的iOS SDK 3.0的Facebook的iOS SDK 3.0 - 會議不開

我需要幫助在登錄過程:

首先我聲明在AppDelegate.h這個屬性:

@property (nonatomic, strong) FBSession *session; 

和視圖控制器類,我得到這個使用它的代碼如下:

AppDelegate *delegate = [[UIApplication sharedApplication]delegate]; 
[delegate.session someproperty]; 

我也有在視圖控制器這種方法得到從viewDidLoad稱爲:

-(void)login 
{ 
    AppDelegate *delegate = [[UIApplication sharedApplication]delegate]; 
    [delegate.session accessToken]; 
    NSLog(@"%d",delegate.session.isOpen); 
    if (!delegate.session.isOpen) 
    { 
     delegate.session = [[FBSession alloc] init]; 
     if (delegate.session.state == FBSessionStateCreatedTokenLoaded) 
     { 
      [delegate.session openWithCompletionHandler:^(FBSession *session, 
                 FBSessionState status, 
                 NSError *error) 
      { 
       NSLog(@"%d", delegate.session.isOpen); // First Line ////////////////// 
      }]; 
     } 
     NSLog(@"%@", delegate.session.description); // Second Line ////////////////// 
    } 
} 

Facebook的應用程序獲得授權杉杉NSLog打印零後,第二NSLog表明session狀態FBSessionStateCreatedFBSessionStateOpen

這是第二NSLog輸出:

2012-08-16 18:37:24.327 Facebook3[2418:f803] <FBSession: 0x6890ff0, state: FBSessionStateCreated, loginHandler: 0x0, appID: 193716877424306, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x6890f20>, expirationDate: (null), refreshDate: (null), attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:()> 

我是缺少在這裏。

注:在https://developers.facebook.com應用程式設定我配置的應用,因爲這樣的: 1-配置爲iOS SSO:啓用 2- iOS原生深度鏈接:啓用 3- iOS的包ID:com.mycompany.appname

回答

5

我在我的項目中使用了這個框架。它工作正常。 這是我的相關代碼

-(IBAction)logIn:(id)sender; 
{ 
    AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    if (!FBSession.activeSession.isOpen) { 
     [appdelegate sessionOpener]; 
    } 
    else { 
     [self loginHelp]; 
    } 

和我sessionOpener功能;

-(void) sessionOpener 
{ 

    [FBSession sessionOpenWithPermissions:nil 
         completionHandler:^(FBSession *session, 
              FBSessionState status, 
              NSError *error) { 
          // session might now be open. 
          if (!error) { 
           [self.viewController loginHelp]; 
          } 
         }]; 

    NSLog(@"%d", FBSession.activeSession.isOpen); 
    NSLog(@"%@", FBSession.activeSession.description); 
} 

它適合我。可能對你有幫助。

和我的控制檯打印是:

 1 
2012-08-16 22:24:55.899 TaraftarlikOyunu[838:c07] <FBSession: 0xd2512c0, state: FBSessionStateOpen, loginHandler: 0xd250240, appID: 433294056715040, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0xd24fda0>, expirationDate: 2012-10-15 19:02:34 +0000, refreshDate: 2012-08-16 19:05:03 +0000, attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(
    )> 
+0

日Thnx你的答案,我會嘗試一下,,,但使用'FBSession'和'FBSession'類的實例之間的不同? – 2012-08-16 18:08:03

+0

你有一個 - (空)sessionStateChanged:(FBSession *)會議 狀態:(FBSessionState)狀態 誤差:(NSError *)錯誤 – meth 2012-08-16 18:12:32

+0

是的,我有一個在'ViewController'類,但它永遠不會被調用,你知道爲什麼? – 2012-08-16 18:35:05

2

我有同樣的問題,因爲你和我打電話handleOpenURL在使用FBSession和FBSession的實例之間混合。我從

- (BOOL)application:(UIApplication *)application 
     openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication 
    annotation:(id)annotation { 
    [FBSession.activeSession facebookSession handleOpenURL:url]; 
} 

改變這種

- (BOOL)application:(UIApplication *)application 
     openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication 
    annotation:(id)annotation { 
    [session facebookSession handleOpenURL:url]; 
} 
+2

[session facebookSession handleOpenURL:url]在語法上不正確。 – Moritz 2012-09-21 10:13:26

+1

我同意@Moritz – 2012-12-29 12:33:15

+0

是會議伊娃嗎? – Sabobin 2013-03-27 15:30:03