2013-03-25 125 views
39

我在我的应用程序中集成了Facebook登录,因此用户可以使用我的应用程序帐户和Facebook登录并执行相应操作。对于Facebook集成,我添加了Facebook SDK.Now退出按钮被点击我的应用程序有明确的Facebook Account.I的所有凭证都走了:使用Facebook ios SDK注销Facebook的应用程序

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


} 

但是,当我在按钮再次点击我米直接重定向到我的帐户,而无需去给Facebook的登录页面。

我该如何注销Facebook?

+0

哪个SDK?有许多。 (PHP,Js,C#)... – 2013-03-25 08:06:11

+0

Facebook ios SDK是我使用的一个... – Aaradhya 2013-03-25 08:35:51

+0

此代码工作正常:) – 2014-06-05 08:35:32

回答

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]; 
    } 
} 
+0

使用Facebook的ios SDK.I没有使用任何FBLoginDialog.Can请你告诉我如何使用Facebook ios SDK注销? – Aaradhya 2013-03-25 08:43:58

20

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

可以添加上导航控制器(右上角)退出按钮viewDidLoad中方法

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

and the 以上添加按钮的操作方法是

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

希望这会帮助你!

Reference

编辑:

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

当我们在我们的应用程序整合Facebook SDK并尝试登录,它会自动检查两个地方(以确保我们已经登录Facebook或不)

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

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

如果我们还没有登录然后,它会询问用户名和密码的应用程序这两个地方

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

按Home键 - >设置 - > Facebook的

enter image description here

+0

我尝试过使用我们的代码,但是如果我点击Login buton而没有要求登录ID和psswrd,我会尝试使用它的代码...我还需要做什么? – Aaradhya 2013-03-25 11:35:47

+0

请参阅iOS 6我们有Facebook的原生框架,所以当您从应用程序登录时,它会检查您是否已经在设备设置中保存了登录信息,因此请确保像Twitter一样,您已经在设置中输入了Facebook帐户信息,否则当您尝试从您的应用程序登录时,会提示您输入联合国和通行证。 – swiftBoy 2013-03-25 11:50:15

+0

对不起,我没有得到你...现在我可以注销脸书,当我在浏览器中打开Facebook网址,然后在那里注销。,然后当我点击登录btn在我的应用程序时它的Facebook提示信息(Id和psswrd) – Aaradhya 2013-03-25 11:56:38

9

FBSDK做登出这样的:

[FBSession.activeSession closeAndClearTokenInformation]; 
    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
    [login logOut]; 
79

使用新的Facebook SDK登录工具包只写在下面的行,这就是它..

[[FBSDKLoginManager new] logOut]; 

如果使用快捷,确保有必要进口

import FBSDKLoginKit 

func logout() { 
    FBSDKLoginManager().logOut() 
} 
+1

这工作? 'FBSDKLoginManager'需要与login中使用的相同吗?或者可能是新的对象。 – Mani 2015-09-02 09:19:42

+0

没有..它不需要相同 – iHulk 2015-09-02 13:02:05

+0

工作很顺利! Thx – JDDelgado 2015-11-01 09:03:50

0

如果使用SWIFT 3或4:

var loginManager = LoginManager() 

当一些动作是需要这个代码粘贴注销完成

loginManager.logOut() 
+0

@ SaschaM78,帮助配偶 – 2018-02-24 06:44:46