Как реализовать API getToken Azure Map в nodejs и java?

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 предоставляет возможность создания собственных модулей для переиспользования кода.


50
1

Ответ:

Решено

Следуйте приведенным ниже инструкциям и руководствуйтесь ссылкой MSDOC, чтобы реализовать API getToken Azure Map в Node.js:

Я использовал этот MSDOC для управления аутентификацией в Microsoft Azure Maps с использованием JavaScript.

  • Добавьте разрешения API 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();