我使用下面的 Java 代码片段来获取 Firebase Messaging 的身份验证令牌。但在调用refreshIfExpired方法时抛出错误。
Java代码:
private static String getAccessToken() throws IOException {
String[] SCOPES = {"https://www.googleapis.com/auth/firebase.messaging"};
GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("./src/service-account.json")).createScoped(Arrays.asList(SCOPES));
//googleCredentials.refresh();
try {
googleCredentials.getAuthenticationType();
googleCredentials.refreshIfExpired();
} catch (IOException e) {
e.printStackTrace();
}
return googleCredentials.getAccessToken().getTokenValue();
}
原因:javax.net.ssl.SSLHandshakeException:远程主机终止握手。
详细错误:获取服务帐户的访问令牌时出错:远程主机终止了握手,iss:firebase-adminsdk-jnf15@
这些错误与 jar 或证书有关吗?根据 Firebase 文档,他们没有提到任何与证书相关的内容。
文档链接中的 Java 片段代码:https://firebase.google.com/docs/cloud-messaging/migrate-v1#use-credentials-to-mint-access-tokens
getAccessToken()
方法已在 Google Firebase API 文档中共享,并且通过上传某些所需的 jar 使用相同的方法。
此服务应该返回访问令牌,该令牌将在后续服务中用作承载令牌,以在 REST API 调用中将通知发送到设备。但该服务未按预期工作并返回错误。
不确定这个问题是否仍然存在,您能解决吗?很想知道你是怎么做到的。