2010-12-02 13 views
2

私はfacebook-ios-sdkを使ってFacebookからいくつかの情報を取得する学校向けの基本的なアプリケーションを構築しています。しかし、私がアプリからログアウトすると、facebookからのデモでさえ、ログインするオプションが与えられません。私は、セッションがまだ有効かどうかをチェックしており、いつも無効になっています。それは別の問題です。ここに私のコードがあります。どんな助けもありがとうございます。facebook-ios-sdkログアウト

- (void)viewDidLoad { 
     _facebook = [[Facebook alloc] init]; 

     if ([_facebook isSessionValid] == NO) { 
     //show proper buttons for login 
     loginButton.hidden = NO; 
     logoutButton.hidden = YES; 
     } 

    else { 
    //show proper buttons for logout 
     loginButton.hidden = YES; 
     logoutButton.hidden = NO; 
    } 
    } 

これは、ログインしているかどうかを確認するためです。その後、適切なボタンが表示されますが、上記のコードはセッションが無効であることを常に返しています。ここで私は中またはログアウトするために呼び出す関数です:

- (void)login { 
    [_facebook authorize:kAppId permissions:_permissions delegate:self]; 
} 

/** 
* Invalidate the access token and clear the cookie. 
*/ 
- (void)logout { 
    [_facebook logout:self]; 
} 
+0

あなたの記事をきれいにしてください、それは本当にこのように読めるわけではありません。 – LordT

+0

申し訳ありません、それはとても悪いとは思わなかった。 – nicholjs

答えて

6

は、Facebookのオブジェクトは、そのaccessTokenおよび/またはEXPIRATIONDATEがnilであるため、それが有効なセッションを持っていないと言います。それはおそらく、それ自体を永続させないからです。おそらく、FBSessionDelegateのfbDidLoginメソッドでログインを処理することによって、accessTokenとexpirationDateを記録する必要があります。

- (void)fbDidLogin { 
    [[NSUserDefaults standardUserDefaults] setValue: _facebook.accessToken forKey: @"access_token"]; 
    [[NSUserDefaults standardUserDefaults] setValue: _facebook.expirationDate forKey: @"expiration_date"]; 
} 

NSUserDefaultsを使用して、たとえば、これらの値をデバイスに保存します。次に、_facebookオブジェクトを割り当てて初期化するたびに、accessTokenとexpirationDateをNSUserDefaultsに保存した値に設定します。

これは、isSessionValid = NOと常に言っているfacebookオブジェクトを修正するはずです。他の問題については、私は同じものを持っています:(