尝试获取非消费者数据时,是否有办法防止消费者帐户出现404错误?

时间:2019-04-26 23:26:06

标签: microsoft-graph openid-connect

我有一个使用Microsoft Graph API获取配置文件数据的应用程序。该应用程序应该能够获取Work / School Azure帐户和使用者Azure帐户的配置文件。我的问题是,当我检索在工作/学校帐户而不是在消费者帐户上公开的数据时,出现404错误。换句话说,我的应用程序应以相同的方式处理工作/学校帐户和消费者帐户,只获取Microsoft Graph公开的消费者帐户数据,而在未暴露数据时不返回错误。

使用消费者帐户的授权令牌调用此端点https://graph.microsoft.com/v1.0/me/,我得到以下响应:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(etc)/$entity",
    "displayName": "<fullname>",
    "surname": "<lastname>",
    "givenName": "<firstname>",
    "id": "value",
    "userPrincipalName": "value@hotmail.com",
    "businessPhones": [],
    "jobTitle": null,
    "mail": null,
    "mobilePhone": null,
    "officeLocation": null,
    "preferredLanguage": null
}

使用工作/学校帐户致电https://graph.microsoft.com/v1.0/me/?$select=birthday,我得到了可以使用的数据。同时使用相同的授权令牌调用https://graph.microsoft.com/v1.0/me/?$select=birthday会返回:

{
    "error": {
        "code": "ResourceNotFound",
        "message": "Resource not found.",
        "innerError": {
            "request-id": "5dac0b98-0335-4de2-b8fa-3b9a2dfbe378",
            "date": "2019-04-26T23:23:21"
        }
    }
}

有什么方法可以检索消费者帐户的个人资料数据,同时仍然尝试在工作/学校帐户中检索未公开的数据而没有返回404?

1 个答案:

答案 0 :(得分:0)

由于您请求的数据不存在(birthday),因此您应该得到404 Not Found的响应。根据{{​​3}}:

  

404(未找到)状态代码表示原始服务器未找到目标资源的当前表示,或不愿意透露该资源的存在。