如何使用Parse和Swift退出Facebook或撤消登录

Sim*_*mon 4 logout ios facebook-ios-sdk parse-platform swift

我正在尝试将我的用户完全记录下来.使用时

PFUser.logout()
Run Code Online (Sandbox Code Playgroud)

我成功地将用户从Parse中注销.但当我回到应用程序并单击登录按钮时,我被重定向到Facebook屏幕上说:"您已经授权[应用程序的名称]"所以我再也无法使用其他帐户登录,除非我重置模拟器.

我也尝试使用注销

PFFacebookUtils.facebookLoginManager().logOut()
Run Code Online (Sandbox Code Playgroud)

但它也不起作用......希望你能帮助我找到解决方案!我正在使用最新的Facebook和Parse SDK

更新:

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

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

Kin*_*ard 5

实际上,撤销登录(让人们完全取消授权应用程序,或撤消登录)和从他/她的Facebook帐户注销用户之间存在差异:

撤消登录

(你可以查看Facebook文档)

您还可以通过调用此Graph API端点,让人们完全取消授权应用或撤消登录:

DELETE /{user-id}/permissions
Run Code Online (Sandbox Code Playgroud)

此请求必须使用有效的用户访问令牌或当前应用的应用访问令牌.如果请求成功,您的应用会收到true的回复.如果呼叫成功,则该人员的任何用户访问令牌都将失效,他们将不得不再次登录.由于您要对您的应用取消授权,因此他们还必须授予对您应用的访问权限,就像他们第一次登录一样.

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")
                    }
                }
}
Run Code Online (Sandbox Code Playgroud)

从用户的Facebook帐户中注销用户

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

PFUser.logOut()
Run Code Online (Sandbox Code Playgroud)

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

我希望这个答案可以帮助你们.