45

我已经在我的应用程序中集成了 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?

4

5 回答 5

85

使用新的 Facebook SDK 登录工具包,只需在下面写下即可。

[[FBSDKLoginManager new] logOut];

如果使用 swift,请确保有必要的导入

import FBSDKLoginKit

func logout() {
    FBSDKLoginManager().logOut()
}
于 2015-05-19T13:57:24.207 回答
20

对于注销,你应该试试这个

您可以在viewDidLoad方法中的导航控制器(右上角)上添加注销按钮

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

上面添加按钮的操作方法

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

希望对你有帮助!

参考

编辑:

正如你问为什么它不要求用户名和密码,所以原因是:

当我们在我们的应用程序中集成 Facebook SDK 并尝试登录时,它会自动检查两个地方(以确保我们已经登录过 Facebook)

  1. 首先,它检查我们是否已经登录到安装在此设备上的 Facebook Native 应用程序。

  2. 然后它会检查我们是否在设备设置中保存了我们的 Facebook 用户名和密码。

如果两个地方我们都没有登录,那么它会在应用程序中询问用户名和密码

您可以在设备设置中检查 Facebook 帐户设置,如下面的屏幕截图所示,

按主页按钮->设置-> Facebook

在此处输入图像描述

于 2013-03-25T10:54:42.257 回答
9

FBSDK 是这样注销的:

  [FBSession.activeSession closeAndClearTokenInformation];
  FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
  [login logOut];
于 2015-04-29T09:43:17.027 回答
4

如果使用 swift 3 或 4:

var loginManager = LoginManager()

当需要执行某些操作以注销时粘贴此代码

loginManager.logOut()
于 2018-02-19T15:38:32.273 回答
0

在你postButtonClicked写下面的 if else :

-(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];
    }
}
于 2013-03-25T08:23:40.127 回答