10

我正在尝试实现“使用 Outlook.com 登录”流程,其中涉及客户端和服务器代码。流程是:

  1. 从客户端将用户重定向到:

https://login.live.com/oauth20_authorize.srf?client_id=<client_id>&response_type=code&redirect_uri=<登录html页面>&scope=openid+offline_access+profile+https:%2f%2foutlook.office.com%2fmail。发送+https:%2f%2foutlook.office.com%2fcontacts.read+onedrive.readwrite

  1. 我将代码返回到我的 html 页面并将其发布到我的 java 服务器。

  2. 在服务器端,我使用代码获取访问和刷新令牌,使用 POST 请求: https ://login.live.com/oauth20_token.srf

正文中的下一个参数:client_id、redirect_uri、client_secret、grant_type="authorization_code" 和 code=< 上一步中的代码 >。

我收到了 access_token 和 refresh_tokem,它们应该有效期为 1 小时。

  1. 还在服务器上,我调用 URL

https://apis.live.net/v5.0/me?access_token= <我刚拿到的access-token >

并得到错误 401:

{
   "error": {
      "code": "request_token_invalid", 
      "message": "The access token isn't valid."
   }
}

这种流量可以吗?

4

1 回答 1

0

我终于能够得到这个工作。

首先获取用户信息的正确端点是:
https ://graph.microsoft.com/v1.0/me

其次,步骤 1 中的范围不应设置为openid ...,而是User.Read.

于 2019-04-30T03:26:41.700 回答