2017-09-06 142 views
1

我正在使用Apollo iOS客戶端來執行GraphQL查詢。我需要通過身份驗證令牌在我能夠用下面的代碼來實現的頭 -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客戶端,您可以使用服務器將身份驗證令牌存儲在cookie中,然後根據每個請求將cookie發送給客戶端。自動地,您將能夠訪問該cookie,如下所示:

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 
    } 
    } 
相關問題