2017-05-07 7 views
7

मैं उपयोग कर रहा हूं;फेसबुक स्विफ्ट एसडीके 0.2.0 स्विफ्ट 3.1 लॉगिन पेज खुला रहता है

  • तेज एसडीके 0.2.0 और
  • तेज 3,1

तो, पर मेरे viewcontroller (initial.swift) मैं

import UIKit 
import FacebookCore 
import FacebookLogin 
... 
override func viewDidLoad() { 
if let accessToken = AccessToken.current { 
    print("User is already logged in") 
    ... 
} 
else { 
    let loginButton = LoginButton(readPermissions: [ .publicProfile, .email ]) 
    loginButton.center = view.center 

    //AFTER ACTION 
    let loginManager = LoginManager() 
    loginManager.logIn([ .publicProfile, .email ], viewController: self) 
     { loginResult in 
      switch loginResult { 
      case .failed(let error): 
       print(error) 
       break 
      case .cancelled: 
       print("User cancelled login.") 
      case .success(let grantedPermissions, let declinedPermissions, let accessToken): 
       print("Logged in!") 
      } 
     } 
}  

लॉग इन बटन के रूप में उम्मीद लेकिन अनुमति के बाद ही पता चलता है गया है पृष्ठ, श्वेत पृष्ठ खुला रहता है, जब मैं "पूर्ण" पर क्लिक करता हूं मैन्युअल रूप से ऐप सोचता है कि उपयोगकर्ता ने लॉगिन रद्द कर दिया है।
गायब ऐप delegate फ़ंक्शंस (34734885) का सुझाव देने वाले समान थ्रेड हैं, लेकिन मुझे लगता है कि यह FBSDKCoreKit और FBSDKLoginKit के लिए एक समाधान है, न कि नए फेसबुक स्विफ्ट एसडीके के लिए। फिर, मुझे लगता है। कोई उपाय?

EDIT
मैंने यह भी कोशिश की है;

let myLoginButton = UIButton() 
myLoginButton.backgroundColor = UIColor.darkGray 
myLoginButton.frame = CGRect(0, 0, 180, 40); 
myLoginButton.center = view.center; 
myLoginButton.setTitle("My Login Button", for: UIControlState.normal) 
// Add the button to the view 
view.addSubview(myLoginButton) 
// Handle clicks on the button 
myLoginButton.addTarget(self, action: #selector(self.FBloginButtonClicked), for: UIControlEvents.touchUpInside) 


@objc func FBloginButtonClicked() { 
    //AFTER ACTION 
    let loginManager = LoginManager() 
    loginManager.logIn([ .publicProfile, .email ], viewController: self) 
    { loginResult in 
     switch loginResult { 
     case .failed(let error): 
      print(error) 
      break 
     case .cancelled: 
      print("User cancelled login.") 
     case .success(let grantedPermissions, let declinedPermissions, let accessToken): 
      print("Logged in!") 
     } 
    } 
} 
+0

क्या आपने ऐपडिलेगेट में अपने आवेदन पर लौटने के लिए विधि लिख दी थी? –

उत्तर

0

के रूप में मैं समझता हूँ कि आप facebook guide?

इस हिस्से भी शामिल करने के लिए तदनुसार सब कुछ किया:

// Handle clicks on the button 
    myLoginButton.addTarget(self, action: @selector(self.loginButtonClicked) forControlEvents: .TouchUpInside) 

और

// Once the button is clicked, show the login dialog 
@objc func loginButtonClicked() { 
    let loginManager = LoginManager() 
    ... 
    } 
+0

मैंने इस ब्लॉक के साथ भी प्रश्न अपडेट करने की कोशिश की है। –

0

अपने प्रश्न को समझने के अनुसार, आप एक लिखने के लिए लगता है appdelegate में विधि। सफल लॉगिन के बाद यह आपके आवेदन पर वापस आ जाएगा।

import FacebookCore // (FBSDKCore's alternative for swift) 

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { 
    let isFBOpenUrl = SDKApplicationDelegate.shared.application(application, open: url, sourceApplication: sourceApplication, annotation: annotation) 

    if isFBOpenUrl { return true } 
    return false 
} 

स्विफ्ट 4:

func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey:Any] = [:]) -> Bool { 
     return SDKApplicationDelegate.shared.application(application, open: url, options: options) 
    } 

आशा इस बात से आपको मदद मिलेगी।

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