web-dev-qa-db-ja.com

Facebook iOS SDKを使用したアプリでのFacebookのログアウト

Facebookのログインをアプリに統合しているため、ユーザーはアプリのアカウントとFacebookの両方でログインし、対応するアクションを実行できます。Facebookの統合のために、Facebook SDKを追加しました。 Facebookアカウントの資格情報:

-(IBAction)btnlogOutClicked:(id)sender
{
  [appDelegate fbDidlogout]; 
}
-(void)fbDidlogout
{
    FBSession* session = [FBSession activeSession];
    [session closeAndClearTokenInformation];
    [session close];
    [FBSession setActiveSession:nil];


}

しかし、もう一度ボタンをクリックすると、Facebookのログインページに移動せずにアカウントに直接リダイレクトされます。

Facebookからログアウトするにはどうすればよいですか?

44
Aaradhya

新しいFacebook SDKログインキットを使用して、以下の行を書くだけです。

[[FBSDKLoginManager new] logOut];

Swiftを使用している場合は、必要なインポートがあることを確認してください

import FBSDKLoginKit

func logout() {
    FBSDKLoginManager().logOut()
}
84
iHulk

ログアウトするには、これを試してください

viewDidLoadメソッドでNavigation Controllerにログアウトボタンを追加(右上隅)

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] 
                                    initWithTitle:@"Logout"
                                    style:UIBarButtonItemStyleBordered
                                    target:self
                                    action:@selector(logoutButtonWasPressed:)];

上記の追加ボタンのアクションメソッド

-(void)logoutButtonWasPressed:(id)sender {
    [FBSession.activeSession closeAndClearTokenInformation];
}

これがあなたを助けることを願っています!

参照

編集:

あなたがなぜユーザー名とパスワードを要求しないのか尋ねたので、理由は次のとおりです:

Facebook SDKをアプリに統合してログインしようとすると、2つの場所が自動的にチェックされます(Facebookに既にログインしているかどうかを確認するため)

  1. まず、このデバイスにインストールされているFacebook Nativeアプリに既にログインしているかどうかを確認します。

  2. 次に、デバイス設定でFaceBookのユーザー名とパスワードを保存したかどうかを確認します。

両方の場所にログインしていない場合、アプリケーションでユーザー名とパスワードを要求します

以下のスクリーンショットに示すように、デバイス設定でFacebookアカウントの設定を確認できます。

ホームボタンを押します->設定-> Facebook

enter image description here

20
swiftBoy

FBSDKは次のようにログアウトしています。

  [FBSession.activeSession closeAndClearTokenInformation];
  FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
  [login logOut];
9
Aqib Mumtaz

Swift 3または4を使用する場合:

var loginManager = LoginManager()

ログアウトするために何らかのアクションを実行する必要がある場合、このコードを貼り付けます

loginManager.logOut()

あなたのpostButtonClickedにelse ifの場合以下を書きます:

-(void)postButtonClicked
{

    _session = [[FBSession sessionForApplication:kApiKey secret:kApiSecret delegate:self] retain];
    [_session resume];

    posting = YES;
    showSlideShow = 1;

    if (_facebookName != nil)
    {
        [self logoutButtonClicked];
    }
    if (![_session isConnected])
    {
        self.loginDialog = nil;
        _loginDialog = [[FBLoginDialog alloc] init];
        [_loginDialog show];
    }
    else {
        self.loginDialog = nil;
        _loginDialog = [[FBLoginDialog alloc] init];
        [_loginDialog show];
    }
}
0
Rushi