2016-08-19 3 views
1

트위터를 통해 Google 서버에 등록해야합니다. 나는 OAuth의 도움으로 등록을했다. 서버에서 요청을하면 토큰이 유효한지 확인합니다. 토큰이 만료되면 서버에서 사임하고 Twitter 세션에서 사임해야합니다. 로그 아웃하지만 세션은 활성 상태입니다. Android 팀이 도움을 받아 수행합니다.Twitter iOS 용 OAuth

TwitterCore.getInstance().getSessionManager().clearActiveSession(); 
TwitterCore.getInstance().logOut(); 

iOS에서 어떻게 할 수 있습니까? 나는 스위프트 제발 도와 줘. 제발 도와 줘.

모든 요청과 함께 우리가 트위터 프레임 워크의 정보를 요청하지 않았다, 그래서 우리는 쿼리 로직을 변경 한

func auth(userEmail: String?, successLoginCallback: ((usr : User) -> Void)?, failLoginCallback: ((message: String) -> Void)?) { 
    Twitter.sharedInstance().sessionStore.reloadSessionStore() 
    Twitter.sharedInstance().startWithConsumerKey(twitterKey, consumerSecret: twitterSecret) 
    Twitter.sharedInstance().logInWithCompletion { (session, error) in 
     if session != nil { 
      TWTRAPIClient.clientWithCurrentUser().requestEmailForCurrentUser({ (twitterEmail, error) in 
       // oauth parameters 
       let oauthSession = TWTRSession(authToken: session!.authToken, authTokenSecret: session!.authTokenSecret, userName: session!.userName, userID: session!.userID) 

       let oauthSigning = TWTROAuthSigning(authConfig: Twitter.sharedInstance().authConfig, authSession: oauthSession) 
       let headers = oauthSigning.OAuthEchoHeadersToVerifyCredentials() 
       guard let authHeaders = headers as? [String : AnyObject] else { 
        return 
       } 
       var passEmail: String? 
       if userEmail != nil { 
        passEmail = userEmail 
       } 
       UserManager.sharedManager.logInViaTwitter(passEmail, parameters: authHeaders, success: { (user) in 
        self.userIsLogginedViaTwitter = true 
        self.twitterSuccessLogin(user) 
        print("user token", user.token?.expr) 
        successLoginCallback?(usr: user) 
        }, fail: { (errorMessage) in 
         if errorMessage != nil { 
          self.twitterFailsLogin(errorMessage!) 
          failLoginCallback?(message: errorMessage!) 
         } 
       }) 
      }) 
     } 
     if error != nil { 
      print(error?.localizedDescription) 
     } 
    } 
} 

func logOut(success: (() ->())?) { 
     Twitter.sharedInstance().startWithConsumerKey(twitterKey, consumerSecret: twitterSecret) 
     guard let userID = Twitter.sharedInstance().sessionStore.session()?.userID else { return } 
     Twitter.sharedInstance().sessionStore.logOutUserID(userID) 
     userIsLogginedViaTwitter = false 
     let cookieStorage: NSHTTPCookieStorage = NSHTTPCookieStorage.sharedHTTPCookieStorage() 
     cookieStorage.cookies?.forEach({ (cook) in 
      cookieStorage.deleteCookie(cook) 
     }) 
     success?() 
    } 



// MARK: - Twitter functions 
    func logInViaTwitter(email: String?, parameters: [String : AnyObject], success: ((user: User) ->())?, fail: ((errorMessage: String?) ->())?) { 
     let url = "\(Networking.baseUrl)/auth/login/tw" 
     guard let oauth_url = parameters["X-Auth-Service-Provider"] as? String else { return } 
     guard let oauth_params = parameters["X-Verify-Credentials-Authorization"] as? String else { return } 
     var passParameters = [String : AnyObject]() 
     if email != nil { 
      passParameters = ["email" : email!, "oauth_url" : oauth_url, "oauth_params": oauth_params] 
     } else { 
      passParameters = ["oauth_url" : oauth_url, "oauth_params": oauth_params] 
     } 
     print("Twitter manager passParameters", passParameters, "Twitter manager passParameters") 

     Networking.manager.request(.POST, url, parameters: passParameters, encoding: .JSON, headers: nil).responseObject { (response: Response<RegisterResponse, NSError>) in 
      guard let result = response.result.value else { 
       fail?(errorMessage: nil) 
       return 
      } 

      if result.meta?.errors.count == 0 { 
       print(result.response) 
       guard let user = Mapper<User>().map(result.response) else { 
        fail?(errorMessage: nil) 
        return 
       } 
       // Save state in Twitter manager 
       TwitterManager.sharedManager.userIsLogginedViaTwitter = true 
       self.saveCurrentUser(user) 
       success?(user: user) 
      } else { 
       fail?(errorMessage: result.meta?.errors.first?.message) 
      } 

     } 
    } 

답변