【问题标题】:Google Analytics Service API - Determining if access token is expiredGoogle Analytics Service API - 确定访问令牌是否过期
【发布时间】:2026-02-03 02:35:01
【问题描述】:

我想知道是否有人知道使用分析 API 检测 401 响应的干净的编程方式。我知道底层的 HTTP 传输可能有它,但是当通过 Analytics 对象进行调用时,唯一的失败指示是 IOException(它可能表示任何类型的错误)。如果有某种方法可以获取堆栈跟踪中显示的 JSON 响应,您可能可以在那里检查,但现在我唯一能想到的就是解析 e.getMessage() 字符串。示例:

GaData gadata = null;
try {
    gaData = analytics.data().ga().get(
            "ga:" + profileId,
            "2012-06-01",
            "2012-06-30",
            "ga:visits")
            .execute();
} catch (IOException ioe) {
    if (ioe.contains("401")) {
        System.out.println("A 401 occurred.");
    }
}

隔离这种情况的原因是因为它表明访问令牌已过期,因此替代解决方案将是检查访问令牌是否已过期的更好方法。如果可以做到这一点,那么代码可以使用 API 密钥进行调用以授予新的访问令牌。

【问题讨论】:

  • 你使用什么框架来调用?换句话说,你从哪里得到 GaData?
  • 对不起,我不够具体。这是 google analytics java services api(工件是 google-api-services-analytics v3-rev10-1.7.2-beta)。

标签: oauth google-analytics


【解决方案1】:

documentation 表示GoogleJsonResponseException 将被抛出。 GoogleJsonResponseException.getDetails() 返回一个GoogleJsonError。 GoogleJsonError.code 方法将返回错误代码(在本例中为 HTTP 401 错误)。

【讨论】: