ios - 即使从 Facebook 设置中删除应用程序后,AccessToken 仍然存在

标签 ios swift facebook facebook-login

我希望我的自定义登录按钮在以下情况下呈蓝色:

  1. 用户已授权该应用且访问 token 仍然存在

我希望我的自定义登录按钮在以下情况下呈灰色:

  1. 访问 token 已过期,我希望用户登录并获取新的 token

嗯,我尝试使用 if/else 条件来实现,如您所见,但为了真正测试这一点,我做了以下操作:

  1. 转到我的 Facebook 设置(WEB)
  2. 点击“应用”
  3. 搜索应用并将其删除

现在,我确定我的自定义登录按钮将具有 GrayColor,因为通过从我的 Facebook 设置中删除授权的应用程序,我也删除了一个访问 token ,但是,事实并非如此。

我需要我的自定义按钮显示为事件(蓝色)和非事件(灰色),具体取决于用户是否已授权应用程序

提前致谢

我的代码:

import UIKit
import FBSDKCoreKit
import FBSDKLoginKit

class ViewController: UIViewController {

    let loginButton: UIButton = UIButton(type: .Custom)

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        if FBSDKAccessToken.currentAccessToken() != nil {

            loginButton.backgroundColor = UIColor.blueColor()
        } else {
            loginButton.backgroundColor = UIColor.grayColor()
        }

        loginButton.frame = CGRectMake(0, 0, 180, 40)
        loginButton.setTitle("My Login Button", forState: .Normal)
        // Handle clicks on the button
        loginButton.addTarget(self, action: "loginWithFacebook", forControlEvents: .TouchUpInside)
        // Add the button to the view
        self.view!.addSubview(loginButton)

    }

    func loginWithFacebook() {
        let login: FBSDKLoginManager = FBSDKLoginManager()

        login.logInWithPublishPermissions(["publish_actions"], fromViewController: self) { (result: FBSDKLoginManagerLoginResult!, error) -> Void in
            if (error != nil) {
                NSLog("Process error")
            }
            else if result.isCancelled {
                NSLog("Cancelled")
            }
            else {
                NSLog("Logged in")
                self.loginButton.backgroundColor = UIColor.blueColor()
            }
        }
    }   
}

最佳答案

为什么必须删除您在 Facebook 上的应用程序?

当您运行模拟器时,您可以从 mac 的顶部栏中选择: Simulator > Reset Content Settings... > 然后点击 Reset

这应该会清除模拟器中的所有内存。然后您可以测试当 Facebook session 和访问 token 不存在时会发生什么。

关于ios - 即使从 Facebook 设置中删除应用程序后,AccessToken 仍然存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34977743/

相关文章:

ios - 获取 UIslider 上的索引

facebook - Xamarin/monotouch 获取 Facebook 好友列表

ios - iOS 的应用程序组织

iphone - 锁定 iPhone 仅在 iOS 5 上断开套接字

ios - 图像转换为 NSData 时出现问题

ruby-on-rails - Omniauth-facebook 的 Facebook Canvas 身份验证重定向问题(在 iframe 外部重定向)

ios - 单例不返回任何图像

ios - 是否可以为 UILabel 中的一个字符设置不同的颜色?

ios - any->(0) 类型的值在 swift ios10 中没有成员 isEnabled

ios - 检查可选的 UserDefaults.standard.value