正确的端点请求Microsoft帐户的基本帐户信息

时间:2019-07-02 19:20:28

标签: php oauth oauth-2.0 microsoft-graph

我正在尝试为我的网站实施一个非常简单的“使用Microsoft登录”按钮。我已经有一个运行正常的Google按钮,并且想要模仿这种行为。简而言之,它应该使用户登录Microsoft(使用学校使用Office 365发行的托管Microsoft帐户),然后向我的应用程序提供电子邮件地址和名称。

但是,我正在努力找到正确的端点来登录后返回基本用户信息。

我已成功从https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=...请求授权码,并将其返回给我的应用。然后,我还能够成功使用https://apis.live.net/v5.0/me?access_token=...返回所需的数据。但是,这仅适用于个人实时帐户,不适用于专业的Office 365帐户。

基本上,没有人知道我可以向其发送授权代码的正确端点,该端点将返回附加到Office 365帐户的电子邮件地址和名称吗?我尝试使用下面的curl请求来https://login.windows.net/common/openid/userinfo,但仅收到一个“ 1”作为响应。

$url = "https://login.windows.net/common/openid/userinfo" ;
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_HTTPHEADER, array("Authorisation: Bearer $access_token"));
curl_setopt($ch,CURLOPT_HTTPHEADER, array("Content-Type: application/json"));

1 个答案:

答案 0 :(得分:2)

您可以在以下端点中获取用户信息:

用户列表:

要获取用户列表,有效端点为:

perl -pe 's/(\d+)(?!.*\d)/sprintf("%05d",$1+1)/e' <<< "abc123_00456.txt"

个人用户:

为获得单个用户,有效端点为:

perl -pe 's/(\d+)(?!.*\d)/sprintf("%0".length($1)."d",$1+1)/e' <<< "abc123_00456.txt"

登录用户:

要获得登录用户的有效端点为:

https://graph.microsoft.com/v1.0/users

需要权限:

要执行此请求,您需要在azure门户网站中获得以下权限

enter image description here

更多参考:

有关更多详细信息的帮助,您可以参考以下文档

  1. Php code example

  2. Azure Active Directory V2.0 Endpoint