Recientemente, algunos desarrolladores han planteado preguntas al usar API para acceder al servicio de indexación, cómo obtener clientToken. De hecho, el modo de autenticación AGC es un conjunto de sistema de autenticación estándar OAuth2 implementado por la puerta de enlace del lado de la nube y los microservicios AGC basados en el método de autenticación clientToken. El servicio de back-end de la puerta de enlace de acceso debe tener un ID de cliente y un secreto de cliente válidos para pasar la verificación de autenticación de la puerta de enlace del lado de la nube e iniciar una llamada efectiva a la interfaz comercial. A continuación se describen dos métodos para obtener clientToken.
Obtener ID de cliente y secreto de cliente
La premisa de ambos métodos es que primero se debe obtener el ID de cliente y el secreto de cliente.
Inicie sesión en la consola de AGC y seleccione "Usuarios y acceso". Elija Clave de API > Conectar API y haga clic en Crear para crear un nuevo cliente de API.
dirección api y parámetros de solicitud
Dirección API: https://connect-api.cloud.huawei.com/api/oauth2/v1/token
Método 1: el cartero obtiene clientToken
El primer método es muy simple. Use cartero directamente, ingrese el par clave-valor de grant_type, client_id y client_secret en el Cuerpo, sin agregar encabezados, y use el método de publicación para iniciar directamente una solicitud para obtener clientToken.
Método 2: use el código en el proyecto para llamar a la API para obtener el token de cliente
Ejemplo de llamada:
public static String getToken(String domain, String clientId, String clientSecret) {
String token = null;
try {
HttpPost post = new HttpPost(domain + "/oauth2/v1/token");
JSONObject keyString = new JSONObject();
keyString.put("client_id", "18893***83957248");
keyString.put("client_secret", "B15B497B44E080EBE2C4DE4E74930***52409516B2A1A5C8F0FCD2C579A8EB14");
keyString.put("grant_type", "client_credentials");
StringEntity entity = new StringEntity(keyString.toString(), Charset.forName("UTF-8"));
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
post.setEntity(entity);
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpResponse response = httpClient.execute(post);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
BufferedReader br =
new BufferedReader(new InputStreamReader(response.getEntity().getContent(), Consts.UTF_8));
String result = br.readLine();
JSONObject object = JSON.parseObject(result);
token = object.getString("access_token");
}
post.releaseConnection();
httpClient.close();
} catch (Exception e) {
}
return token;
}
Después de que la llamada sea exitosa, se devuelve la respuesta correcta y se obtienen el token de cliente y el período de validez:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"access_token": "eyJhbGciOiJIUzU****************",
"expires_in": 172800
}
Para obtener más artículos técnicos, visite https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh