ios - 如何使用 Parse 和 Swift 从 Facebook 注销或撤销登录

标签 ios swift parse-platform facebook-ios-sdk logout

我正在尝试让我的用户完全退出我的应用程序。使用时

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 帐户注销用户

如果您已使用 ParseFacebook 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/

相关文章:

android - 具有照片编辑和推送通知的跨平台移动应用程序 - 建议

ios - Swift Annotation CallOut 按钮选择

php - 如何在 php 中检索 Parse.com 用户详细信息

ios - Parse.com 云调用算作查询吗?

python - 解析剩余调用从指针数组获取数据

ios - 使用 FacebookSDK 在 Facebook 上仅共享文本的问题

ios - 滚动时表格 View 数据重复

ios - 从 UIpickerview 中提取值作为变量

ios - 如何从屏幕中间到任何地方生成随机图像?

使用指针从 swift 调用 C 库方法