我正在尝试将以下代码行从Objective C转换为新的编程语言
Swift.也许有人可以帮助我并概述差异.太棒了!
if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) {
[FBSession openActiveSessionWithReadPermissions:@[@"public_profile"]
allowLoginUI:NO
completionHandler:^(FBSession *session,FBSessionState state,NSError *error) {
// Handler for session state changes
// This method will be called EACH time the session state changes,// also for intermediate states and NOT just when the session open
[self sessionStateChanged:session state:state error:error];
}];}
谢谢,托比亚斯
解决方法
这是我的答案:很少关键字像FBSessionStateCreatedTokenLoaded抛出错误给我..所以这可能会有所帮助
func application(application: UIApplication,didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Whenever a person opens the app,check for a cached session
if FBSession.activeSession().state == FBSessionState.CreatedTokenLoaded
{
// If there's one,just open the session silently,without showing the user the login UI
FBSession.openActiveSessionWithReadPermissions(["public_profile"],allowLoginUI: false,completionHandler: {
(session,state,error) -> Void in
self.sessionStateChanged(session,state: state,error: error)
})
}
return true
}
func sessionStateChanged(session : FBSession,state : FBSessionState,error : NSError?)
{
// If the session was opened successfully
if state == FBSessionState.Open
{
println("Session Opened")
}
// If the session closed
if state == FBSessionState.Closed
{
println("Closed")
}
}
点击按钮点击Facebook登录
@IBAction func FacebookLoginpressed(Sender: AnyObject)
{
if (FBSession.activeSession().state == FBSessionState.Open || FBSession.activeSession().state == FBSessionState.OpenTokenExtended)
{
// Close the session and remove the access token from the cache
// The session state handler (in the app delegate) will be called automatically
FBSession.activeSession().closeAndClearTokeninformation()
}
else
{
// Open a session showing the user the login UI
// You must ALWAYS ask for public_profile permissions when opening a session
FBSession.openActiveSessionWithReadPermissions(["public_profile"],allowLoginUI: true,completionHandler: {
(session:FBSession!,state:FBSessionState,error:NSError!) in
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
// Call the app delegate's sessionStateChanged:state:error method to handle session state changes
appDelegate.sessionStateChanged(session,error: error)
})
}
}