访问令牌错误 - 图形 API 获取用户配置文件



我正在使用Microsoft图形API来登录并获取用户配置文件。我有访问令牌。虽然我正在尝试获取我获得访问令牌的用户的个人资料。

这是我的代码,我在这里错过了什么吗?只需要用户配置文件。注意:我通过代理服务器在任何地方使用 Cors,它用于获取代码和访问令牌。

感谢您的帮助!

我尝试添加资源 URL。我尝试更改标头(您不需要GETDEL请求的正文参数)。

let auth =
"http://localhost:8080/https://graph.microsoft.com/v1.0/me?access_token=";
let client_id = "?client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
let redirect_uri = "&redirect_uri=http://localhost:8100/";
let response = "&response_type=code";
let resource = "&resource=https://graph.microsoft.com";
let scope =
"&scope=openid+https://outlook.office.com/Contacts.read+offline_access";
let url =
auth + token + resource + client_id + redirect_uri;
//let url = 'http://localhost:8080/https://graph.microsoft.com/v1.0/me?access_token=' + token +"&resource=https://graph.microsoft.com";
this.http.get(url, {
headers: {
Authorization: "Bearer " + token,
"Content-Type": "application/x-www-form-urlencoded",
"Access-Control-Allow-Origin": "*",
resource: "https://graph.microsoft.com"
}
});

预期:获取 AccessToken 并获取用户的配置文件,如此处的第 4 部分所示。

你在这里有很多事情发生。

  1. 您同时指定scope属性和resource属性。这些不属于一起。如果您使用的是 v1 终结点,则应使用resource,如果您使用的是 v2 终结点,则应使用scope。请参阅文档中的范围,而不是资源。

  2. 您的url不正确。v1 的实际 URL 应如下所示:

    https://login.microsoftonline.com/common/oauth2/authorize?client_id={id}&scope=https%3A%2F%2Fgraph.microsoft.com&redirect_uri={uri}&response_type=code
    

    或者对于 v2,如下所示:

    https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={id}&scope=openid+user.read+contacts.read+offline_access&redirect_uri={uri}&response_type=code
    
  3. 不能为此使用http.get()。OAuth 的授权代码授予首先将用户重定向到此 URL。然后,它将返回您POSTcode返回到/token终结点以检索access_tokenrefresh_token

  4. 您需要User.Read范围来检索用户的配置文件(或User.ReadBasic.All检索其他用户的配置文件)。

我建议使用 v2 终结点并从这里开始:

  • Microsoft v2 端点入门
  • 获取访问令牌以调用Microsoft图
  • AAD v2 终结点概述

相关内容

  • 没有找到相关文章