我正在使用Apollo iOS客户端进行GraphQL查询。我需要在头文件中传递Auth令牌,我可以使用下面的代码实现 -
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 :(得分:2)
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
}
}