我按照这里的说明操作: https://firebase.google.com/docs/cloud-messaging/auth-server
我收到以下错误:
Exception in thread "main" java.lang.IllegalArgumentException: no JSON input found
at com.google.api.client.repackaged.com.google.common.base.Preconditions.checkArgument(Preconditions.java:125)
at com.google.api.client.util.Preconditions.checkArgument(Preconditions.java:49)
at com.google.api.client.json.JsonParser.startParsing(JsonParser.java:223)
at com.google.api.client.json.JsonParser.parse(JsonParser.java:380)
at com.google.api.client.json.JsonParser.parse(JsonParser.java:355)
at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:87)
at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:81)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.fromStream(GoogleCredential.java:250)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.fromStream(GoogleCredential.java:226)
at n.a.test.Main.getAccessToken(Main.java:51)
at n.a.test.Main.main(Main.java:74)
private String getAccessToken() {
fileInputStream = Main.class.getResourceAsStream("/serviceAccountKey.json");
readFile();
GoogleCredential googleCredential = null;
try {
googleCredential = GoogleCredential.fromStream(fileInputStream)
.createScoped(Arrays.asList("https://www.googleapis.com/auth/firebase.messaging"));
googleCredential.refreshToken();
} catch (IOException e) {
e.printStackTrace();
}
return googleCredential.getAccessToken();
}
它在这一行抱怨:googleCredential = GoogleCredential.fromStream(fileInputStream)
但是readFile()
方法我打印了我的serviceAccountKey.json
文件,因此fileInputStream不为空。
serviceAccountKey.json文件的内容是:
{
"type": "service_account",
"project_id": "test",
"private_key_id": "test",
"private_key": "-----BEGIN PRIVATE KEY-----\nbig string\n-----END PRIVATE KEY-----\n",
"client_email": "sample@test.iam.gserviceaccount.com",
"client_id": "numbers",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "certs_url.iam.gserviceaccount.com"
}