1

使用volley库从 android调用 GET https://graph.microsoft.com/v1.0/me/calendars API 时出现意外的响应代码 Http 401错误。

我已经添加了所有必需的权限,例如 Calendars.Read、Calendars.Read.Shared、Calendars.ReadWrite、Calendars.ReadWrite.Shared 等

历史 :

我已经设置了用于从以下链接调用 Microsoft Graph API 的 android 项目: https ://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-android

在 gradle 构建文件中使用依赖项:实现 'com.microsoft.identity.client:msal:0.3.+'

我能够从 android 应用程序登录和注销。

我还可以访问 https://graph.microsoft.com/v1.0/me API 并从 microsoft 服务器获得适当的响应。

但在其他 Graph API 中出现错误。请在下面找到日历 API 调用的连接方法:

用于日历 API 的 volloy 网络调用

    /* Make sure we have a token to send to graph */
    if (authResult.getAccessToken() == null) {
        return;
    }

    RequestQueue queue = Volley.newRequestQueue(this);

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, "https://graph.microsoft.com/v1.0/me/calendars",
            null, new Response.Listener<JSONObject>() {

        @Override
        public void onResponse(JSONObject response) {

            /* Successfully called graph, process data and send to UI */
            Log.d(TAG, "Response: " + response.toString());
        }

    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(TAG, "Error: " + error.toString());
        }

    })
    {
        @Override
        public Map<String, String> getHeaders() {

            Map<String, String> headers = new HashMap<>();
            headers.put("Authorization", "Bearer " + authResult.getAccessToken());
            return headers;
        }
    };

    Log.d(TAG, "Adding HTTP GET to Queue, Request: " + request.toString());
    request.setRetryPolicy(new DefaultRetryPolicy(3000,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    queue.add(request);

来自上述 API 调用的响应: https ://graph.microsoft.com/v1.0/me/calendars 的意外响应代码 401

请帮助我使用 volley 类通过 android 应用程序调用 Graph API。

4

0 回答 0