@mechanicnikodimich

Не получает посмотреть токен клиента при логине через фейсбук?

Доброго времени суток, господа.
Возникла проблема следующего характера:
Хочу добавить кастомную кнопку для получения токена пользователя фэйсбука.

Вот AppDelegate:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        NSURLProtocol.registerClass(TrainStarURLProtocol)

        return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
    }
    
    func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
        return GIDSignIn.sharedInstance().handleURL(url,
                                                    sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String,
                                                    annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
        
    }
    
    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
        var flag: Bool = false
        // handle Facebook url scheme
        if let wasHandled:Bool = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
            {
            flag = wasHandled }
        if let googlePlusFlag: Bool = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication!, annotation: annotation) {
            flag = googlePlusFlag
        }
        return flag
    }


Кнопка размещена на View, вот код ViewController'а:

@IBOutlet weak var facebookbutton: UIButton!

class LoginViewController: UIViewController,GIDSignInUIDelegate,GIDSignInDelegate {
   override func viewDidLoad() {
facebookbutton.addTarget(self, action: #selector(LoginViewController.loginFacebookAction(_:)), forControlEvents: UIControlEvents.TouchUpInside)
        super.viewDidLoad()
}

func loginFacebookAction(sender: FBSDKLoginButton!) {
        let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
  self.getFBUserData()
        fbLoginManager.logInWithReadPermissions(["email"], fromViewController: self) { (result, error) -> Void in
              self.getFBUserData() 
              print("Done")}

    }
    
    func getFBUserData(){
        if((FBSDKAccessToken.currentAccessToken()) != nil){
            FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, email, access_token"]).startWithCompletionHandler({ (connection, result, error) -> Void in
                if (error == nil){
                    //everything works print the user data
                   // let json = try! NSJSONSerialization.JSONObjectWithData (result! as! NSData, options: .MutableContainers) as! NSDictionary
                   let token = FBSDKAccessToken.currentAccessToken()
                    print(token)
                }
                else {
                    print(error.description)
                }
            })
        }
    }

}


При запуске приложения кнопка активна, получается залогинится. При подтверждении того, что приложение доступно открывается пустая страница.
При нажатии на кнопку Done в Сафари срабатывает print, но так как судя по всему
FBSDKAccessToken.currentAccessToken()) == nil
больше ничего не происходит.
Помогите исправить природную кривизну рук, что делаю не так?
  • Вопрос задан
  • 364 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы