2016-09-15 17 views
1

我在iOS9中使用Facebook SDK,但我没有获得aceestoken。我已经在viewcontroller.swift文件中写入了登录代码。我所做的所有设置都是在我的info.plist文件中,但在取用语音中总是得到零值。如何获得IOS中的FBSDKAccessToken Swift

这里是我的代码

AppDelegate.swift

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 
    var window: UIWindow? 
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

    FBSDKLoginButton.classForCoder() 
    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 

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

ViewController.swift

class ViewController: UIViewController,FBSDKLoginButtonDelegate { 


override func viewDidLoad() { 
      super.viewDidLoad() 
      //outlet for fbsdkloginbutton 
      @IBOutlet weak var facebookLoginButton: FBSDKLoginButton! 
     var error:NSError? 

       //check for error 
       if error != nil{ 
            print(error) 
            return 
           } 
        //Check for the access token 
           if (FBSDKAccessToken.currentAccessToken() == nil){ 
            print("USER NOT LOGGED IN") 
           }else{ 
            print("USER LOGGED IN") 
           } 
       //set delegate for button 
         self.facebookLoginButton.delegate = self 
           //read permission 
           facebookLoginButton.readPermissions = ["public_profile","user_friends","email"] 
          } 
         func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) { 
           /* 
           Check for successful login and act accordingly. 
           Perform your segue to another UIViewController here. 
           */ 
         if (error != nil){ 
            print(error.localizedDescription) 
           } 

           if let userToken = result.token{ 
            // GET USER TOKEN HERE 
            let token:FBSDKAccessToken = userToken 
            print(token) 
            //print token id and user id 
            print("TOKEN IS \(FBSDKAccessToken.currentAccessToken().tokenString)") 
            print("USER ID IS \(FBSDKAccessToken.currentAccessToken().userID)") 

           } 

          } 
          func applicationWillTerminate(application: UIApplication) 
          { 
           // Called when the application is about to terminate.  Save data if 
          } 


          func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) { 
           // Actions for when the user logged out goes here 
          } 

         } 
+0

你是如何试图获取访问令牌的? – donnywals

回答

0
FBSDKAccessToken.currentAccessToken() 

返回nil,如果没有访问令牌

0

您需要在ViewController中实现委托功能。这site是非常有帮助的。 HTH。

func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) { 
    if ((error) != nil) { 
     // Process error 
    } else if result.isCancelled { 
     // Handle cancellations 
    } else { 
     let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields" : "id, email, name"]) 
     graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in 
      if ((error) != nil) { 
       print("Error: \(error)") 
      } else { 
       // Do work in app. 
       let token = FBSDKAccessToken.currentAccessToken().tokenString 
       let loginProvider = CustomIdentityProvider(tokens: ["graph.facebook.com": token!]) 
       if let user : NSString = result!.valueForKey("name") as? NSString { 
        print("user: \(user)") 
       } 
       if let id : NSString = result!.valueForKey("id") as? NSString { 
        print("id: \(id)") 
       } 
       if let email : NSString = result!.value(forKey: "email") as? NSString { 
        print("email: \(email)") 
       } 
      } 
     }) 
    } 
} 
相关问题