2016-02-10 4 views
0

Я интегрирую facebook в свое приложение. но после входа в систему FBSDKAccessToken.currentAccessToken() нашел нуль.FBSDKAccessToken.currentAccessToken() найдено nil everytime

Вот мой код:

override func viewDidLoad() { 

    if (FBSDKAccessToken.currentAccessToken() != nil) 
    { 
     print("Not loggedin...") 
    } 
    else 
    { 
     print("logged in...") 

    } 

    loginbutton.delegate = self 
    loginbutton.readPermissions = ["public_profile", "email", "user_friends"] 

} 


func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) { 


    if(error == nil) 
    { 
     print("login complete") 
     print(result) 
     print(result.grantedPermissions) 
    } 
    else{ 
     print(error.localizedDescription) 
    } 

    if let userToken = result.token 
    { 
     let token:FBSDKAccessToken = result.token 
     print("TOKEN = \(FBSDKAccessToken.currentAccessToken().tokenString)") 
     print("User ID = \(FBSDKAccessToken.currentAccessToken().userID)") 

    } 

    let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"name, email"]) 

    graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in 

     if ((error) != nil) 
     { 
      // Process error 
      print("Error: \(error)") 
     } 
     else 
     { 
      print("fetched user: \(result)") 
      let userEmail : NSString = result.valueForKey("email") as! NSString 
      print("User Email is: \(userEmail)") 
      let userName : NSString = result.valueForKey("name") as! NSString 
      print("User Name is: \(userName)") 

     } 
    }) 

} 

func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) { 
    print("User Logged Out") 
} 

После входа в систему, я получаю пустой экран. Он печатает сообщение об успешном входе, но он не собирается в этом:

if let userToken = result.token 
{ 
    let token:FBSDKAccessToken = result.token 
    print("TOKEN = \(FBSDKAccessToken.currentAccessToken().tokenString)") 
    print("User ID = \(FBSDKAccessToken.currentAccessToken().userID)") 

} 

Итак, я не получаю жетон. И в то время как его в печать по электронной почте его, показывая эту ошибку:

это мой код в AppDelegate

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool 
{ 
    return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) 
} 


func applicationDidBecomeActive(application: UIApplication) { 

    FBSDKAppEvents.activateApp() 

} 








func application(application: UIApplication, 
    openURL url: NSURL, options options: [String: AnyObject]) -> Bool { 
     return GIDSignIn.sharedInstance().handleURL(url, 
      sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey]! as! String, 
      annotation: options[UIApplicationOpenURLOptionsAnnotationKey]) 
} 

фактически каждый раз его так называемый метод OpenURL интеграции GMAIL так, как я могу поставить условие для вызова метода Facebook интеграция

+0

вар fbAccessToken = FBSDKAccessToken.currentAccessToken(). TokenString –

+0

я не получаю это FBSDKAccessToken.currentAccessToken(). userID - его пожарная ошибка. описание: result = @Uma –

ответ

3

ли следующие изменения в коде, он будет работать

func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) { 
      println("User Logged In") 

      if ((error) != nil) 
      { 
       // Process error 
      } 
      else if result.isCancelled { 
       // Handle cancellations 
      } 
      else { 
       // If you ask for multiple permissions at once, you 
       // should check if specific permissions missing 
       if result.grantedPermissions.contains("email") 
       { 
        // Do work 
     self.returnUserData() 

       } 
      } 
     } 

вызов этот метод, чтобы получить идентификатор пользователя электронной

func returnUserData() 
     { 
      let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters:["fields":"name,email,first_name,last_name"]) 
      graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in 

       if ((error) != nil) 
       { 
        // Process error 
        println("Error: \(error)") 
       } 
       else 
       { 
        println("fetched user: \(result)") 
        let userName : NSString = result.valueForKey("name") as! NSString 
        println("User Name is: \(userName)") 
        let userEmail : NSString = result.valueForKey("email") as! NSString 
        println("User Email is: \(userEmail)") 
       } 
      }) 
     } 

удалите этот метод

func application(application: UIApplication, 
    openURL url: NSURL, options 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 { 
if url.scheme == "fbxxxxx" 
{ 
//xxxxx is your APP ID 
return FBSDKApplicationDelegate.sharedInstance().application(
       application, 
       openURL: url, 
       sourceApplication: sourceApplication, 
       annotation: annotation) 
}else if url.scheme == "com.googleusercontent.apps.xxxxxx" 
    { 
// string is reverse client ID 
return GIDSignIn.sharedInstance().handleURL(url, 
       sourceApplication: sourceApplication, 
       annotation: annotation) 
    } 
} 
+0

Главное, что я получаю результат nil @rohit –

+0

проверить обновленный ans –

+0

все уже добавлено, но все еще не работает –

Смежные вопросы