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

时间:2016-01-24 15:43:57

标签: ios swift facebook facebook-login

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

  1. 用户已授权该应用,并且仍然存在一个访问权限
  2. 我希望我的自定义登录按钮在以下情况下具有灰色:

    1. 访问令牌已过期,我希望用户登录并获取新的
    2. 好吧,我尝试使用if / else条件,你可以看到,但为了真正测试这个我做了以下:

      1. 去了我的Facebook设置(WEB)
      2. 点击' Apps'
      3. 搜索该应用并将其删除
      4. 现在,我确定我的自定义登录按钮将具有GrayColor,因为通过从我的Facebook设置中删除授权的应用程序,我也删除了一个访问权限,但事实并非如此。

        我需要自定义按钮显示为活动状态(蓝色)和非活动状态(灰色),具体取决于用户是否已授权应用

        提前致谢

        我的代码:

        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()
                    }
                }
            }   
        }
        

1 个答案:

答案 0 :(得分:1)

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

当你运行模拟器时,你可以从mac的顶栏中选择: 模拟器>重置内容设置...>然后单击重置

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