我正在尝试让我的用户完全退出我的应用程序。使用时
PFUser.logout()
我成功地将用户从 Parse 中注销。 但是当我返回应用程序并点击登录按钮时,我被重定向到 Facebook 屏幕,上面写着:“您已经授权 [应用程序名称]” 所以我永远不能用另一个帐户再次登录,除非我重置模拟器。
我还尝试使用注销
PFFacebookUtils.facebookLoginManager().logOut()
但是也没用... 希望你能帮我找到解决办法! 我正在使用最新的 Facebook 和 Parse SDK
更新:
实际使用 PFUser.logout()
和最新版本的 Parse 以及 Facebook iOS SDK version >= 4.4.0 就可以了这份工作。
不要使用 PFFacebookUtils.facebookLoginManager().logOut()
或 FBSDKLoginManager().logOut()
,因为它只会让用户从 注销Facebook 但不是来自 Parse 后端。这意味着它不会删除 Parse 后端的可撤销 session 。
最佳答案
实际上,撤销登录(让人们完全取消对应用程序的授权,或撤销登录)和注销用户从他/她的 Facebook 帐户中是有区别的:
撤销登录
(你可以查看Facebook documentation)
您还可以通过调用此图谱 API 端点,让人们完全取消应用程序的授权或撤销登录:
DELETE /{user-id}/permissions
此请求必须使用有效的用户访问 token 或当前应用的应用访问 token 发出。如果请求成功,您的应用会收到 true 响应。如果调用成功,此人的任何用户访问 token 都将失效,他们将不得不重新登录。由于您要取消对您的应用的授权,他们还必须授予对您的应用的访问权限,就像他们是第一次登录一样。
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 帐户注销用户
如果您已使用 Parse 和 Facebook iOS SDK version >= 4.4.0 通过 Facebook 注册或登录用户,并且您不想取消应用程序的授权或撤销登录,而只想从 Facebook 注销用户,那么请改用:
PFUser.logOut()
它将注销用户,删除 Parse 后端的 session (不要忘记 enable Parse revocable session 通过您的 Parse 应用程序设置),另外它还会删除写入用户设备磁盘上的 Facebook session 。
希望这个回答能对大家有所帮助。
关于ios - 如何使用 Parse 和 Swift 从 Facebook 注销或撤销登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30716200/