如何从Facebook注销或使用Parse和Swift撤销login

我正尝试将我的用户完全login到我的应用程序中。 使用时

PFUser.logout() 

我成功地将用户从Parse注销。 但是当我回来的应用程序,并点击loginbutton,我被redirect到Facebook屏幕上说:“你已经授权[应用程序的名称]”所以我不能再login另一个帐户,除非我重置模拟器。

我也尝试使用注销

 PFFacebookUtils.facebookLoginManager().logOut() 

但它也行不通…希望你能帮我find解决办法! 我正在使用最新的Facebook和Parse SDK

更新:

实际上使用PFUser.logout()和最后版本的ParseFacebook iOS SDK版本> = 4.4.0将完成这项工作。

不要使用PFFacebookUtils.facebookLoginManager().logOut()FBSDKLoginManager().logOut() ,因为它只会将用户从Facebook注销,而不是从Parse后端注销。 这意味着它不会删除Parse后端的可撤销会话。

实际上, 撤销login (允许用户完全取消授权应用或撤销login)与从他/她的Facebook帐户注销用户有区别:

撤消login

(你可以查看Facebook文档 )

您还可以让人们完全取消授权应用程序,或者通过调用此Graph API端点来吊销login:

 DELETE /{user-id}/permissions 

此请求必须使用有效的用户访问令牌或当前应用的应用访问令牌进行。 如果请求成功,您的应用程序将收到一个true的响应。 如果通话成功,则该用户的任何用户访问令牌都将失效,并且必须重新login。 由于您正在取消授权您的应用,因此他们也必须授予对您的应用的访问权限,就像他们第一次login一样。

 let facebookRequest: FBSDKGraphRequest! = FBSDKGraphRequest(graphPath: "/me/permissions", parameters: nil, HTTPMethod: "DELETE") facebookRequest.startWithCompletionHandler { (connection: FBSDKGraphRequestConnection!, result: AnyObject!, error: NSError!) -> Void in if(error == nil && result != nil){ println("Permission successfully revoked. This app will no longer post to Facebook on your behalf.") println("result = \(result)") } else { if let error: NSError = error { if let errorString = error.userInfo?["error"] as? String { println("errorString variable equals: \(errorString)") } } else { println("No value for error key") } } } 

从他/她的Facebook帐户注销用户

如果您已经使用ParseFacebook iOS SDK版本> = 4.4.0通过Facebook注册或login用户,并且您不想取消授权应用或撤销login,但只是要退出login来自Facebook的用户,请改用:

 PFUser.logOut() 

它会注销用户,在Parse后端删除会话(不要忘记通过Parse应用程序设置启用 Parse 可撤销会话 ),另外还会删除写在用户设备磁盘上的Facebook会话。

我希望这个答案能帮助你们。

我刚刚实现了这一点。 从应用程序中的任何viewController调用此函数,它将从Facebook注销。 为我工作就像一个魅力。 我希望它可以帮助你。

 -(void) logout { FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; if ( [FBSDKAccessToken currentAccessToken] ){ [login logOut]; } } 

来源: 在iOS应用程序中从Facebook注销

 - (void)logout:(id<FBSessionDelegate>)delegate { _sessionDelegate = delegate; NSMutableDictionary * params = [[NSMutableDictionary alloc] init]; [self requestWithMethodName:@"auth.expireSession" andParams:params andHttpMethod:@"GET" andDelegate:nil]; [params release]; [_accessToken release]; _accessToken = nil; [_expirationDate release]; _expirationDate = nil; NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray* facebookCookies = [cookies cookiesForURL: [NSURL URLWithString:@"https://m.facebook.com"]]; for (NSHTTPCookie* cookie in facebookCookies) { [cookies deleteCookie:cookie]; } if ([self.sessionDelegate respondsToSelector:@selector(fbDidLogout)]) { [_sessionDelegate fbDidLogout]; } }