如何使用Mapbox SDK检测过期的身份验证令牌?

时间:2019-02-04 17:10:57

标签: android mapbox mapbox-android

我正在使用Android Mapbox SDK 7.0.0,并通过给定方法Mapbox.getInstance(applicationContext, mapboxToken)

给SDK提供了身份验证令牌

我的身份验证令牌mapboxToken运行正常,并显示了地图。

但是,如何检测身份验证令牌何时过期?

我想不时刷新此身份验证令牌,但这也意味着Android应用必须检测过期的令牌才能请求新的令牌。

如果缓存中没有图块,则MapboxView会触发OnDidFailLoadingMapListener,但是如果缓存中有一些图块,则将正确加载映射,不会加载新的图块,也不会触发回调。

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。可以覆盖Mapbox SDK的Http客户端。该解决方法适用于Android提供的Mapbox SDK。添加拦截器,我们可以在将响应返回给Mapbox本机库之前解释Http代码。

这是我捕获未授权HTTP代码的解决方法:

val client = OkHttpClient.Builder().addInterceptor { chain ->
  val response = chain.proceed(chain.request())

  if (response.code() == 401) {
    // Code that handles unauthorized Mapbox token
  }

  response
}.build()

HttpRequestImpl.setOkHttpClient(client)