2016-11-22 11 views
6

में FBSDKAccessToken वर्तमान टोकन को पुनर्प्राप्त नहीं कर सकता है, मैं एफबी टोकन को पुनर्प्राप्त करने के लिए FBSDKAccessToken.currentAccessToken() फ़ंक्शन का उपयोग कर रहा था, जो ठीक से काम कर रहा था, जब तक कि मैंने अपने ऐप को स्विफ्ट 3 में माइग्रेट नहीं किया हो और 4.17 एसडीके। अब, फ़ंक्शन का नाम बदलकर FBSDKAccessToken.current() कर दिया गया है और जब ऐप प्रतिनिधि पुनः लोड हो रहा है तो शून्य है। मैंने कुछ परीक्षण किए हैं, और मैंने अपने ऐप को पुनरारंभ करने के बाद टोकन प्राप्त करने में कामयाब रहा है और मैंने पहले ही एफबी में लॉग इन किया है, लेकिन यह वह व्यवहार नहीं है जिसकी मैं अपेक्षा कर रहा था।तेजी से 3/एफबीएसडीके 4.17

संपादित करें: मैं 4.15 पर वापस आ गया और यह फिर से काम कर रहा है।

यहाँ मेरी AppDelegate में कोड है:

func applicationDidBecomeActive(_ application: UIApplication) 
{ 

    FBSDKAppEvents.activateApp(); 

} 

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> (Bool) 
{ 

    let wasHandled: Bool = FBSDKApplicationDelegate.sharedInstance().application(application 
     ,open:url 
     ,sourceApplication:sourceApplication 
     ,annotation:annotation) 

    if (wasHandled) { 
     if let fbtoken = FBSDKAccessToken.current() { 
      loginWithFacebook(fbtoken.tokenString); 
     }else{ 
      print("no current token") 
     } 
    } 

    return wasHandled 
} 

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 


    let wasHandled: Bool = FBSDKApplicationDelegate.sharedInstance().application(
     app, 
     open: url as URL!, 
     sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, 
     annotation: options[UIApplicationOpenURLOptionsKey.annotation] 
    ) 

    if (wasHandled) { 
     if let fbtoken = FBSDKAccessToken.current() { 
      loginWithFacebook(fbtoken.tokenString); 
     }else{ 
      print("no current token") 
     } 
    } 

    return wasHandled; 
} 

आपकी मदद :) डेनिस

+0

मैं भी फली 'FBSDKCoreKit', '4.15.0' फली 'FBSDKLoginKit', '4.15.0' फली 'FBSDKShareKit' के साथ वापस लुढ़का, '4.15.0' और http पीछा किया: // stackoverflow। कॉम/ए/41119777/1220633 अब वास्तविक डिवाइस और सिम्युलेटर दोनों पर काम करता है। – RikiRiocma

उत्तर

2

किसी कारण के लिए धन्यवाद, यह अब और काम नहीं कर रहा।

यदि आप FBSDKLoginButton का उपयोग कर रहे हैं तो आपको कॉलबैक का इंतजार करने के लिए FBSDKLoginButtonDelegate का उपयोग करना होगा।

class LoginView: UIViewController, FBSDKLoginButtonDelegate { 
    @IBOutlet weak var facebookButton: FBSDKLoginButton! 

    override func viewDidLoad() { 
     facebookButton.delegate = self 
    } 

    //Called at the end of the user connection 
    func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) { 
     if ((error) != nil) { 
      //Process error 
     } else if result.isCancelled { 
      // Handle cancellations 
      print("result is canceled") 
     } else { 
      if let fbToken = result.token.tokenString { 
       print(fbToken) 
      } 
     } 
    } 

    func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) { 
     print("logout from FB") 
    } 
} 

वैकल्पिक रूप से, आप भी FBSDKLoginManager का उपयोग कर सकते हैं। यहाँ documation की जाँच करें:

https://developers.facebook.com/docs/reference/ios/current/class/FBSDKLoginManager/

आशा इस मदद!

संबंधित मुद्दे