2017-09-06 4 views
1

GraphQL 쿼리를 수행하기 위해 Apollo iOS 클라이언트를 사용하고 있습니다. 내가 코드 아래 사용하여 달성 할 수 있어요 헤더에 인증 토큰을 전달해야 -GraphQL Apollo iOS 클라이언트 응답 헤더

쿼리를 가져 내
let apolloAuth: ApolloClient = { 
      let configuration = URLSessionConfiguration.default 
      let token = "Bearer \(UserDefaults.standard.string(forKey: "UserToken") ?? "")" 
      // Add additional headers as needed 
      configuration.httpAdditionalHeaders = ["Authorization": token] 

      let url = URL(string: "...URL.../graphql")! 

      return ApolloClient(networkTransport: HTTPNetworkTransport(url: url, configuration: configuration)) 
     }() 

은 다음과 같이 간다 -

apolloAuth.fetch(query: referralQuery){ (result, error) in 

     if let error = error { 
      print(error.localizedDescription) 
      return 
     }else{ 
      self.referralId = result?.data?.referrals?.id 
     } 

    } 

이제 내 서버 후 모든 상쾌 인증 토큰을 반환 응답 헤더의 일부인 요청. 응답 헤더에서 토큰을 가져와야하지만 그렇게 할 수있는 방법을 찾을 수 없습니다. 누군가 나를 인도 할 수 있습니까?

답변

0

URLSessionConfiguration 개체에는 공유 된 HTTPCookieStorage 개체가 함께 제공됩니다. 해당 구성으로 apollo 클라이언트를 설정하면 서버를 사용하여 인증 토큰을 쿠키에 저장 한 다음 모든 요청에 ​​대해 쿠키를 클라이언트에 보냅니다. 자동으로 다음과 같이 해당 쿠키에 액세스 할 수 있습니다.

apollo.fetch(query: GraphQLQuery()) { result, error in 
     if let error = error { fatalError(error.localizedDescription) } 
     if let data = result?.data { 
      // do something with data 
     } 
     self.getCookies() 
     } 

func getCookies() { 
    let cookies = HTTPCookieStorage.shared.cookies 
    if let c = cookies { 
     print(c) 
     // if your server sent a token inside a cookie, you will see it here 
    } 
    }