let Options = {
authOptions: {
authType: AuthenticationType.anonymous,
clientId: ClientId,
getToken: async (resolve: any, reject: any) => {
// How to implement the Azure Map getToken API in nodejs and java?
resolve(bearerToken);
}
}
}
реализовать API getToken Azure Map в nodejs и Java
🤔 А знаете ли вы, что...
Node.js предоставляет возможность создания собственных модулей для переиспользования кода.
Следуйте приведенным ниже инструкциям и руководствуйтесь ссылкой MSDOC, чтобы реализовать API getToken Azure Map в Node.js:
Я использовал этот MSDOC для управления аутентификацией в Microsoft Azure Maps с использованием JavaScript.
Access Azure Maps
и Sign in and read user profile
и предоставьте согласие администратора в созданном вами зарегистрированном приложении.Azure Maps Data Contributor
к зарегистрированному приложению в учетной записи Azure Maps.В приведенном ниже примере кода показано, как получить токен доступа к Azure Maps. Функция getAzureMapsBearerToken
извлекает и печатает токен, используя класс ClientSecretCredential
библиотеки Azure Identity в Node.js.
const { ClientSecretCredential } = require("@azure/identity");
const azureClientId = process.env.AZURE_CLIENT_ID;
const azureClientSecret = process.env.AZURE_CLIENT_SECRET;
const azureTenantId = process.env.AZURE_TENANT_ID;
const credential = new ClientSecretCredential(azureTenantId, azureClientId, azureClientSecret);
// Example usage: Fetching a bearer token for Azure Maps
async function getAzureMapsBearerToken() {
try {
// Fetching the token
const token = await credential.getToken(["https://atlas.microsoft.com/.default"]);
console.info("Access token:", token.token);
} catch (error) {
console.error("Failed to obtain Azure Maps token:", error);
}
}
getAzureMapsBearerToken();
Приведенный ниже код описывает, как получить доступ к API Azure Maps с помощью MapsRoute с помощью токена от ClientSecretCredential
.
const { ClientSecretCredential } = require("@azure/identity");
const MapsRoute = require("@azure-rest/maps-route").default;
const azureClientId = process.env.AZURE_CLIENT_ID;
const azureClientSecret = process.env.AZURE_CLIENT_SECRET;
const azureTenantId = process.env.AZURE_TENANT_ID;
const mapsAccountClientId = "64a376de-528d-4550-b161-9f8011329322"; // Replace with your Maps account client ID
const credential = new ClientSecretCredential(azureTenantId, azureClientId, azureClientSecret);
const client = MapsRoute(credential, mapsAccountClientId);
async function getAzureMapsBearerToken() {
try {
// Fetching the token
const token = await credential.getToken(["https://atlas.microsoft.com/.default"]);
console.info("Access token:", token.token);
const routeDirectionsResult = await client.path("/route/directions/{format}", "json").get({
queryParameters: {
query: "51.368752,-0.118332:41.385426,-0.128929",
},
});
console.info("Route directions result:", routeDirectionsResult.body);
} catch (error) {
console.error("Failed to obtain Azure Maps token:", error);
}
}
getAzureMapsBearerToken();
Использование класса DefaultAzureCredential:
const { DefaultAzureCredential } = require("@azure/identity");
async function getToken() {
try {
const credential = new DefaultAzureCredential();
const tokenResponse = await credential.getToken("https://atlas.microsoft.com/.default");
console.info("Azure Maps token:", tokenResponse.token);
return tokenResponse.token;
} catch (error) {
console.error("Failed to get Azure Maps token:", error);
throw error;
}
}
async function main() {
try {
const bearerToken = await getToken();
console.info("Token received:", bearerToken);
} catch (error) {
console.error("Error:", error);
}
}
main();