【问题标题】:Apollo client & Hasura authentication on iOSiOS 上的 Apollo 客户端和 Hasura 身份验证
【发布时间】:2019-02-28 16:04:19
【问题描述】:

我正在尝试在 iOS 上使用 apollo 客户端实现订阅,我查看了 this 线程,但它对我不起作用。我仍然收到这个Authentication hook unauthorized this request, code: 1000Operation couldn't be completed Starscream.WSError error 1

我的代码是:

let apollo: ApolloClient = {
    let authPayload = ["X-Hasura-Access-Key": "<my_key>",
                       "Content-Type": "application/json"]

    let configuration = URLSessionConfiguration.default
    configuration.httpAdditionalHeaders = authPayload

    let map: GraphQLMap = authPayload

    let url = URL(string: "https://url")!
    let wsUrl = URL(string: "wss://url")!

    let httpNetworkTransport = HTTPNetworkTransport(url: url, configuration: configuration)
    let wsNetworkTransport = WebSocketTransport(request: URLRequest(url: wsUrl), connectingPayload: map)

    return ApolloClient(networkTransport: SplitNetworkTransport(httpNetworkTransport: httpNetworkTransport,
                                                            webSocketNetworkTransport: wsNetworkTransport))
}()

它在查询方面工作得很好,但在 websocket 和订阅方面却不行。我做错了什么?

UPD:这很有趣,但如果我删除 wsNetworkTransport 中的有效负载,错误仍然存​​在。另外,如果我通过request.addValue手动添加请求头,错误又是一样的。

我这样称呼客户:

apollo.subscribe(subscription: OrdersSubscription(id: "123")) { (result, error) in
        error == nil ? print(result!) : print(error!)
}

我还缺少任何其他设置吗?这东西真的缺少文档。

【问题讨论】:

  • 检查你的 Access-Key ,这个错误很明显,因为你没有身份验证
  • @a.masri 我仔细检查了一下,它验证查询,但不验证订阅
  • 基于 apollo 客户端文档,身份验证类型 Bearer 不是访问密钥,请查看此文档apollographql.com/docs/ios/initialization.html
  • WebSocketTransport 似乎对标头更改没有响应,这很奇怪,我尝试更改标头,但它不起作用 - 同样的错误

标签: ios swift graphql apollo hasura


【解决方案1】:

这段代码 sn-p 应该可以工作:

let authPayloads = [
  "X-Hasura-Access-Key": "<key>"
]
let map: GraphQLMap = ["headers": authPayloads]
let websocket = WebSocketTransport(request: urlRequest, connectingPayload: map)

有效载荷映射的结构需要稍有不同。

【讨论】:

  • 是的,我刚刚联系了 Hasura 支持,他们确实提供了帮助。 github.com/hasura/graphql-engine/issues/503。 100% 为我工作。哦,你来自 Hasura :) 再次感谢!
  • 哈利路亚,赞美 t̶h̶e̶L̶o̶r̶d̶ iamnat !我一直在寻找一切来解决这个问题。
猜你喜欢
  • 2013-01-12
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 2018-10-17
  • 2019-08-12
  • 1970-01-01
  • 2013-11-14
相关资源
最近更新 更多