如何在node.js中将Microsoft Graph API称为“ https://graph.microsoft.com/v1.0/me/”?

时间:2019-04-27 14:51:22

标签: node.js azure microsoft-graph

我已经在azure活动目录中创建了azure OAuth连接设置,并且我使用了azure图形API“ https://graph.microsoft.com/v1.0/me/”来获取用户详细信息。

我在邮递员中调用了此API,并在“授权”中传递了用户令牌,然后我获得了所有用户详细信息。调用此“ https://graph.microsoft.com/v1.0/me/” API时,邮递员提供了以下响应。

例如。

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
    "businessPhones": [],
    "displayName": "raman",
    "givenName": "kuamr",
    "jobTitle": null,
    "mail": null,
    "mobilePhone": null,
    "officeLocation": null,
    "preferredLanguage": null,
    "surname": "sdf-890b52347751",
    "userPrincipalName":
"kumar_google.onmicrosoft.com",
    "id": "dsfc-29c6827f2fbe"
}

但是现在我需要在node.js中调用此API。如何在node.js中调用此API,以及如何获得邮递员收到的响应。

1 个答案:

答案 0 :(得分:0)

这里是您可以逐步进行的code sample

它使用microsoft-graph-client来调用Microsoft Graph。

passport-azure-ad用于认证和获取访问令牌,simple-oauth2用于令牌管理。

这是使用访问令牌调用enpoint的相关代码(在第3步中),但是对您来说,执行详细的步骤以了解完整流程将是有益的。

public LiveData<List<FlightPlan>> getFlightPlans() {
    Log.d(TAG, "GET_FLIGHT_PLANS");

    final MutableLiveData<List<FlightPlan>> data = new MutableLiveData<>();

    mRestApi.getFlightPlanList().enqueue(new Callback<List<FlightPlan>>() {
        @Override
        public void onResponse(Call<List<FlightPlan>> call, Response<List<FlightPlan>> response) {
            if (response.code() == 200) {
                List<FlightPlan> temp = response.body();
                for (FlightPlan flightPlan : temp) {
                    Log.d(TAG + "res", flightPlan.toString());
                }
                data.postValue(response.body());
                Log.d(TAG + "res", response.toString());
            }
        }

        @Override
        public void onFailure(Call<List<FlightPlan>> call, Throwable t) {
            List<FlightPlan> flightPlans = new ArrayList<>();
            flightPlans.add(new FlightPlan(0, "Test", 3.551, 50.52, 3.55122, 50.52625));
            data.postValue(flightPlans);
            Log.d(TAG, t.getMessage());
        }
    });

    return data;
}