Ошибка 400 Bad Request при проверке ответа на запрос с помощью API проверенного доступа Google.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка 400 Bad Request при проверке ответа на запрос с помощью API проверенного доступа Google.

Сообщение Anonymous »

Я использую следующий код, чтобы отправить ответ на запрос в Google Verify API для проверки. Однако я столкнулся с ошибкой:

Код: Выделить всё

Verification Failed: 400 Bad Request
Response: {
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT"
}
}
код:

Код: Выделить всё

package org.example;

import com.google.auth.oauth2.AccessToken;
import com.google.auth.oauth2.GoogleCredentials;
import okhttp3.*;
import org.json.JSONObject;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.Collections;

public class Main {

private static final String VERIFIED_ACCESS_URL = "https://verifiedaccess.googleapis.com/v2/challenge:verify";
// Fetch sensitive data from environment variables
private static final String SERVICE_ACCOUNT_KEY = System.getenv("SERVICE_ACCOUNT_KEY");
private static final String CHALLENGE_RESPONSE = System.getenv("CHALLENGE_RESPONSE");
private static final String EXPECTED_IDENTITY = "KIOSK_MODE"; // Optional, set if needed

public static void main(String[] args) {
try {
// Validate the challenge response
String sanitizedResponse = CHALLENGE_RESPONSE.trim();
if (!isValidBase64(sanitizedResponse)) {
System.err.println("Invalid Base64 encoding in challenge response.");
return;
}

String accessToken = getAccessToken();

// Prepare the payload
JSONObject payloadJson = new JSONObject();
payloadJson.put("challengeResponse", sanitizedResponse);
if (!EXPECTED_IDENTITY.isEmpty()) {
payloadJson.put("expectedIdentity", EXPECTED_IDENTITY);
}

String payload = payloadJson.toString();
System.out.println("Payload: " + payload);

OkHttpClient client = new OkHttpClient();
RequestBody body = RequestBody.create(payload, MediaType.parse("application/json"));

Request request = new Request.Builder()
.url(VERIFIED_ACCESS_URL)
.addHeader("Authorization", "Bearer " + accessToken)
.addHeader("Content-Type", "application/json")
.post(body)
.build();

// Execute the request
try (Response response = client.newCall(request).execute()) {
String responseBody = response.body() != null ? response.body().string() : "No response body";
System.out.println("HTTP Response Code: " + response.code());
System.out.println("Response Body: " + responseBody);

if (response.isSuccessful()) {
System.out.println("Verification Successful!");
} else {
System.err.println("Verification Failed. Reason: " + responseBody);
}
}
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
e.printStackTrace();
}
}

private static String getAccessToken() throws IOException {
GoogleCredentials credentials = GoogleCredentials.fromStream(
new ByteArrayInputStream(SERVICE_ACCOUNT_KEY.getBytes()))
.createScoped(Collections.singletonList("https://www.googleapis.com/auth/verifiedaccess"));
credentials.refreshIfExpired();
AccessToken token = credentials.getAccessToken();
if (token == null) {
throw new RuntimeException("Failed to fetch the access token.");
}
return token.getTokenValue();
}

private static boolean isValidBase64(String input) {
try {
Base64.getDecoder().decode(input);
return true;
} catch (IllegalArgumentException e) {
return false;
}
}
}
Я следовал документации Google Verified Access: https://developers.google.com/chrome/ve ... oper-guide
1. .CHALLENGE_RESPONSE выглядит правильно и имеет кодировку Base64.
2.Ключ сервисного аккаунта и другие конфигурации кажутся действительными.
3.Отправляемая полезная нагрузка имеет правильный формат JSON.
Что могло быть причиной ошибки INVALID_ARGUMENT? Будем очень признательны за любые предложения по решению этой проблемы! Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/792 ... verified-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»