@@ -25,6 +25,7 @@ public final class LoginViewController: BaseViewController<LoginViewModel> {
2525 private let appleLoginButton = UIButton ( )
2626 private let logoutButton = UIButton ( )
2727 private let withdrawButton = UIButton ( )
28+ private let reissueButton = UIButton ( )
2829 private var cancellables : Set < AnyCancellable >
2930
3031 public override init ( viewModel: LoginViewModel ) {
@@ -72,6 +73,14 @@ public final class LoginViewController: BaseViewController<LoginViewModel> {
7273 self ? . viewModel. action ( input: . withdraw)
7374 } , for: . touchUpInside)
7475 }
76+
77+ reissueButton. do {
78+ $0. setTitle ( " 토큰 재발급 " , for: . normal)
79+ $0. setTitleColor ( . blue, for: . normal)
80+ $0. addAction ( UIAction { [ weak self] _ in
81+ self ? . viewModel. action ( input: . reissue)
82+ } , for: . touchUpInside)
83+ }
7584 }
7685
7786 override func configureLayout( ) {
@@ -82,6 +91,7 @@ public final class LoginViewController: BaseViewController<LoginViewModel> {
8291 view. addSubview ( appleLoginButton)
8392 view. addSubview ( logoutButton)
8493 view. addSubview ( withdrawButton)
94+ view. addSubview ( reissueButton)
8595
8696 kakaoLoginButton. snp. makeConstraints { make in
8797 make. leading. equalTo ( safeArea) . offset ( Layout . horizontalMargin)
@@ -110,6 +120,13 @@ public final class LoginViewController: BaseViewController<LoginViewModel> {
110120 make. bottom. equalTo ( logoutButton. snp. top) . offset ( - Layout. loginButtonSpacing)
111121 make. height. equalTo ( Layout . loginButtonHeight)
112122 }
123+
124+ reissueButton. snp. makeConstraints { make in
125+ make. leading. equalTo ( safeArea) . offset ( Layout . horizontalMargin)
126+ make. trailing. equalTo ( safeArea) . inset ( Layout . horizontalMargin)
127+ make. bottom. equalTo ( withdrawButton. snp. top) . offset ( - Layout. loginButtonSpacing)
128+ make. height. equalTo ( Layout . loginButtonHeight)
129+ }
113130 }
114131
115132 override func bind( ) {
@@ -148,6 +165,17 @@ public final class LoginViewController: BaseViewController<LoginViewModel> {
148165 }
149166 }
150167 . store ( in: & cancellables)
168+
169+ viewModel. output. reissueResultPublisher
170+ . receive ( on: DispatchQueue . main)
171+ . sink { reissueResult in
172+ if reissueResult {
173+ BitnagilLogger . log ( logType: . debug, message: " 토큰 재발급 성공 " )
174+ } else {
175+ BitnagilLogger . log ( logType: . debug, message: " 토큰 재발급 실패 " )
176+ }
177+ }
178+ . store ( in: & cancellables)
151179 }
152180
153181 private func appleLogin( ) {
@@ -171,7 +199,9 @@ extension LoginViewController: ASAuthorizationControllerDelegate {
171199 guard
172200 let credential = authorization. credential as? ASAuthorizationAppleIDCredential ,
173201 let authCodeData = credential. authorizationCode,
174- let authToken = String ( data: authCodeData, encoding: . utf8)
202+ let identityTokenData = credential. identityToken,
203+ let authToken = String ( data: authCodeData, encoding: . utf8) ,
204+ let identityToken = String ( data: identityTokenData, encoding: . utf8)
175205 else {
176206 BitnagilLogger . log ( logType: . error, message: " Apple AuthorizationCode 파싱 실패 " )
177207 return
0 commit comments