[swift] Swift Moya에서 토큰 인증 사용하기

Moya는 Swift 기반의 네트워킹 추상화 라이브러리로, 클라이언트와 서버 간의 통신을 쉽게 처리할 수 있습니다. 이번에는 Moya를 사용하여 서버에 토큰 인증을 적용하는 방법을 알아보겠습니다.

1. Moya 설치하기

Moya를 사용하기 위해서는 먼저 CocoaPods 또는 Swift Package Manager를 통해 Moya를 프로젝트에 추가해야 합니다.

CocoaPods를 사용하는 경우

Podfile에 다음과 같이 Moya를 추가합니다:

target 'YourProject' do
  pod 'Moya'
end

그리고 터미널에서 pod install 명령어를 실행하여 Moya를 설치합니다.

Swift Package Manager를 사용하는 경우

Xcode에서 프로젝트를 열고 File -> Swift Packages -> Add Package Dependency를 선택합니다.

검색 창에 “Moya”를 입력하고, Moya 패키지를 선택하여 추가합니다.

2. 토큰 인증 설정하기

2.1 Auth 플러그인 추가

먼저 Moya의 Auth 플러그인을 사용하여 토큰 인증을 설정합니다. Auth 플러그인은 Moya에서 제공하는 기능으로, 요청에 헤더에 토큰을 추가하는 일을 처리해줍니다.

Auth 플러그인을 사용하기 위해 다음과 같이 MoyaProvider를 생성할 때 Auth 플러그인을 추가합니다:

let provider = MoyaProvider<Target>(plugins: [AuthPlugin(token: "your_token")])

위 코드에서 Target은 Moya의 TargetType 프로토콜을 구현한 타겟입니다. your_token 부분에는 실제 토큰 값을 넣어주어야 합니다.

2.2 토큰 재발급 처리

토큰의 유효기간이 만료되었을 경우, 서버로부터 토큰을 재발급 받아야 합니다. 이를 위해 토큰 재발급 요청을 보내고, 응답으로 받은 토큰을 다시 AuthPlugin에 업데이트해야 합니다.

토큰 재발급 요청은 예를 들어 refreshToken API를 사용하여 서버와 통신하여 수행할 수 있습니다. 이는 서버에 따라 다를 수 있으므로, 서버와의 약속된 규약에 따라 구현해야 합니다.

provider.request(.refreshToken) { result in
  switch result {
  case .success(let response):
    // 토큰 재발급 성공: 응답에서 받은 새로운 토큰을 AuthPlugin에 업데이트
    let newToken = parseToken(from: response)
    provider.plugins = [AuthPlugin(token: newToken)]
  case .failure(let error):
    // 토큰 재발급 실패: 에러 처리
    handleTokenRefreshFailure(with: error)
  }
}

위 코드에서 refreshToken은 예시로 사용한 API 이름입니다. 실제로는 서버 API의 규칙에 맞게 변경해야 합니다.

3. 토큰 인증 사용하기

토큰 인증이 설정되고 토큰이 만료되었을 경우에는 Auth 플러그인이 자동으로 토큰 재발급 요청을 하게 됩니다. 따라서 개발자는 Moya를 사용하여 요청을 보낼 때, 토큰에 대한 처리를 별도로 할 필요가 없습니다.

다음은 Moya를 사용하여 인증이 필요한 요청을 보내는 예시입니다:

provider.request(.getUserProfile) { result in
  switch result {
  case .success(let response):
    // 요청 성공: 응답 데이터 처리
    handleUserProfieResponse(response)
  case .failure(let error):
    // 요청 실패: 에러 처리
    handleRequestFailure(with: error)
  }
}

위 코드에서 getUserProfile은 예시로 사용한 API 이름입니다. 실제로는 서버 API의 규칙에 맞게 변경해야 합니다.

결론

이제 Moya를 사용하여 서버에 토큰 인증을 적용하는 방법을 알아보았습니다. Moya의 Auth 플러그인을 이용하여 토큰 인증을 구현하고, 토큰 재발급 처리를 함께 수행하는 것으로 효율적인 네트워킹 처리를 할 수 있습니다.

더 자세한 내용은 Moya 공식 문서를 참조하시기 바랍니다.