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からログアウトするにはどうすればよいですか?
新しいFacebook SDKログインキットを使用して、以下の行を書くだけです。
[[FBSDKLoginManager new] logOut];
Swiftを使用している場合は、必要なインポートがあることを確認してください
import FBSDKLoginKit
func logout() {
FBSDKLoginManager().logOut()
}
ログアウトするには、これを試してください
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に既にログインしているかどうかを確認するため)
まず、このデバイスにインストールされているFacebook Nativeアプリに既にログインしているかどうかを確認します。
次に、デバイス設定でFaceBookのユーザー名とパスワードを保存したかどうかを確認します。
両方の場所にログインしていない場合、アプリケーションでユーザー名とパスワードを要求します
以下のスクリーンショットに示すように、デバイス設定でFacebookアカウントの設定を確認できます。
ホームボタンを押します->設定-> Facebook
FBSDKは次のようにログアウトしています。
[FBSession.activeSession closeAndClearTokenInformation];
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logOut];
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];
}
}