2017-09-06 11 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クライアントを設定したら、サーバーを使用して認証トークンをクッキーに保存してから、リクエストごとにクライアントにクッキーを送信します。自動的に、そのような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 
    } 
    } 
関連する問題