是否有针对无效令牌错误的 Algolia 即时搜索回调?

Are there Algolia instantsearch callbacks for invalid token errors?

我正在构建一个网络应用程序,在 Rails 后端和 ReactJS 前端有一个 Ruby。我将 Algolia instantsearch.js 用于搜索页面,我想在页面加载时使用用户密钥创建一个密钥,并在用户注销时删除对该密钥的访问权限。我还希望它们在 2 小时后过期。

所有这一切都很好,但有时新创建的用户密钥在即时搜索客户端尝试连接之前无法访问索引(很奇怪,对吧?),导致初始"search" 失败,Algolia 服务器返回无效密钥错误,结果部分为空白。不过,之后立即在栏中输入搜索,然后接受密钥。

我已经决定,当返回无效密钥错误时,我希望客户端暂停片刻,然后重试。如果失败,我希望向用户显示一条错误消息。这也是为了解决用户仍在使用时令牌过期的问题——消息可以只要求用户刷新页面,避免应用突然无响应的混乱。

有没有办法用即时搜索来做到这一点?在标准的 Algolia 搜索中,您可以添加回调或像这样指定:

index.search({
  filters: 'smartphone AND retina' // smartphone AND retina
}, function searchDone(err, content) {
  if (err) {
    console.error(err);
    return;
  }

  console.log(content);
});

但由于即时搜索应该 "just work" 似乎我无法控制搜索功能。

SearchResults 应该会显示结果,它可以很好地从成功的搜索中获取匹配项,但据我所知,它们不存储响应代码。不过,如果我错了,那就太棒了。

被建议用于获得类似回调的行为,但这些解决方案适用于 render 方法,如果整个客户端从一开始就出错,我认为不会发生这种情况。

当您在 Algolia 中使用 add_user_key 时,密钥的创建和传播之间会有一小段延迟,因此您的用户会遇到问题。在加载的集群上,这可能需要几秒钟。

一种检查 API 密钥是否准备好使用的方法是轮询 get_user_key_acl 直到它 returns 一个 200 HTTP 代码。

我们通常建议使用 secured_api_keys
Algolia 的安全 API 密钥正在使用具有参数组合的实际 API 密钥。 它们提供与实际 API 密钥相同的限制功能(具有相同的安全性),但可以根据需要用于任意数量的帐户,动态更改而无需为所有客户重新生成所有 API 密钥, 终于可以立即使用了。