我已将Facebook登录集成到我的应用程序中,因此用户可以使用我的应用程序帐户和Facebook登录并执行相应的操作。对于Facebook集成,我已添加Facebook SDK
。现在,当我的应用程序中单击“注销”按钮时它必须清除Facebook帐户的所有凭据。但是,当我再次点击按钮时,我直接登录我的帐户而无需进入Facebook登录页面。
如何退出Facebook?
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self toggleHiddenState:YES];
self.fbLoginStates.text = @"";
self.loginButton.delegate = self;
self.loginButton.readPermissions = @[@"public_profile", @"email"];
}
-(void)toggleHiddenState:(BOOL)shouldHide
{
self.lblUsername.hidden = shouldHide;
self.lblEmail.hidden = shouldHide;
self.profilePicture.hidden = shouldHide;
}
#pragma mark - FBLoginView Delegate method implementation
-(void)loginViewShowingLoggedInUser:(FBLoginView *)loginView
{
self.fbLoginStates.text = @"You are logged in.";
[self toggleHiddenState:NO];
}
-(void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user
{
NSLog(@"%@", user);
self.profilePicture.profileID = user.id;
self.lblUsername.text = user.name;
self.lblEmail.text = [user objectForKey:@"email"];
}
-(void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView
{
self.fbLoginStates.text = @"You are logged out";
[self toggleHiddenState:YES];
}
-(void)loginView:(FBLoginView *)loginView handleError:(NSError *)error
{
NSLog(@"%@", [error localizedDescription]);
}
答案 0 :(得分:1)
在AppDelegate .m
中#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
在AppDelegate .m
中return [[FBSDKApplicationDelegate sharedInstance] application:application
didFinishLaunchingWithOptions:launchOptions];
在登录屏幕.m: -
- (void)FacebookLogin:(id)sender {
// [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(getFacebookData) name:@"getFacebookData" object:nil];
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login
logInWithReadPermissions: @[@"public_profile", @"email", @"user_friends"]
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
NSLog(@"Process error");
} else if (result.isCancelled) {
NSLog(@"Cancelled");
} else {
NSLog(@"Logged in");
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:@"/me"
parameters:@{ @"fields": @" email",}
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
// Insert your code here
NSLog(@"%@",result);
[MBProgressHUD hideHUDForView:self.view animated:YES];
} failedBlock:^{
[MBProgressHUD hideHUDForView:self.view animated:YES];
UIAlertController * alert= [UIAlertController alertControllerWithTitle:APP_NAME message:@"Could not connect to the server." preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* okButton = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action)
{
//Handel your yes please button action here
[alert dismissViewControllerAnimated:YES completion:nil];
}];
[alert addAction:okButton];
[self presentViewController:alert animated:YES completion:nil];
}];
}];
}
}];
}
在退出屏幕.m: -
-(IBAction)Logout:(id)sender
{
[[FBSDKLoginManager new] logOut];
}