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

问题描述 投票:0回答:1

我正在使用Microsoft图形API来登录并获取用户个人资料。我有accessToken。虽然我正在尝试获取我获得AccessToken的用户的个人资料。

这是我的代码,我在这里遗漏了什么?只需要用户个人资料。注意:我通过代理服务器在任何地方使用Cors,代理服务器用于获取代码和accessToken。

谢谢你的帮助!

我已经尝试添加资源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并获取用户的个人资料,如Part 4 here

javascript ionic-framework ionic2 microsoft-graph
1个回答
1
投票

你在这里有很多事情要做。

  1. 你要指定scoperesource属性。这些不属于一起。如果您正在使用v1端点,那么您应该使用resource,如果您使用的是v2端点,那么您应该使用scope。请参阅文档中的Scopes, Not Resources
  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。然后它将返回code然后POST回到/token端点以检索access_tokenrefresh_token
  4. 您需要User.Read范围来检索用户的配置文件(或User.ReadBasic.All以检索其他用户的配置文件)。

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

© www.soinside.com 2019 - 2024. All rights reserved.