H,在我的应用程序中,用户可以使用facebook登录应用程序。我能够使用fbsession成功登录但我无法注销表单fbsession。一旦用户登录到应用程序我已经手动退出fbsession。但我无法退出fbseesion。在我的应用程序中,当我点击登录按钮时它没有指向登录页面直接显示对话框页面,对于我,我必须每次在我的应用程序中显示登录页面。 这是我的代码
- (IBAction)facebooklogin:(id)sender
{
[FBSession openActiveSessionWithReadPermissions:@[@"email",@"user_location",@"user_birthday",@"user_hometown"]
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
switch (state) {
case FBSessionStateOpen:
[[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
if (error) {
NSLog(@"error:%@",error);
}
else
{
// retrive user's details at here as shown below
NSLog(@"user :%@",user);
NSDictionary *resultdict=[[[NSDictionary alloc]initWithObjectsAndKeys:user.first_name,@"FirstName",user.last_name,@"LastName",user.last_name,@"LastName",user.birthday,@"Birthday",user.username,@"Username",[user objectForKey:@"email"],@"Email",user.id,@"FBUserId", nil]autorelease];
[[NSUserDefaults standardUserDefaults]setObject:resultdict forKey:@"FBUserDetails"];
NSString *userid=[NSString stringWithFormat:@"%@@social",user.id];
[self performSelector:@selector(checkSocialNetworkingRegisteredOrNot:) withObject:userid afterDelay:0.0f];
}
}];
break;
default:
break;
}
} ];
}
/////////////////////////从fbsession手动退出///////////
- (IBAction)logoutmanullayInbackground:(id)sender
{
[FBSession.activeSession closeAndClearTokenInformation];
[[FBSession activeSession] close];
[[FBSession activeSession] closeAndClearTokenInformation];
[FBSession setActiveSession:nil];
}
答案 0 :(得分:1)
您正在退出(事实上您看到按钮说“再次登录”意味着您已成功注销)。但是,如果您正在使用SSO(通过iOS集成登录或Facebook应用程序),那么当用户再次单击“登录”时,将不会提示他们(因为应用程序或设备上的用户已经授权你的应用程序)。
要解决此问题(因为您说您正在制作餐馆应用程序),您可以卸载Facebook应用程序(并从iOS中删除登录),或者您可以在打开会话时使用FBSessionLoginBehaviorForcingWebView登录。 / p>