使用 Microsoft Graph 创建用户 API (PHP)
Creating users using the Microsoft Graph API (PHP)
问题
我正在尝试构建一个与 Microsoft Graph API 集成的应用程序。
我在 Azure 中有一个管理员帐户,并通过门户设置了一个新应用程序。
我已经下载并安装了 PHP SDK,并成功设置了所有内容,以便我可以成功获得用户。
我可以登录该应用程序并授予使用我的信息的权限(我请求的权限是 Directory.ReadWrite.All
,但即使只是请求 User.ReadWrite.All
对我来说也不起作用),但是,我的问题似乎是我无法访问其他用户。
以下仅returns我自己的用户:
$graph = new Graph();
$graph->setAccessToken('/* SOMETOKEN */');
$users = $graph->createRequest('GET', '/users')
->setReturnType(User::class)
->execute();
发布新用户 returns 我遇到 404 错误:
$newUser = new User();
$newUser->setAccountEnabled(true);
$newUser->setGivenName('first_name');
$newUser->setSurname('last_name');
$newUser->setUserPrincipalName('some.email@address.com');
$password = new PasswordProfile();
$password->setPassword('some_password');
$newUser->setPasswordProfile($password);
$user = $graph->createRequest('POST', '/users')
->attachBody($newUser)
->execute();
Returns:
{
"error": {
"code": "",
"message": "No HTTP resource was found that matches the request URI 'https://outlook.office365.com:444/profile/v1.0/users('CID:a8ef4446a149de4d')/profile?api-version=AGSV1-internal'.",
"innerError": {
"date": "/* timestamp */",
"request-id": "/* an id */",
"client-request-id": "/* an id */"
}
}
}
即使尝试使用 Microsoft 的 Graph Explorer 也会遇到同样的错误。
我认为这可能是帐户设置问题是否正确?
更新
这是 Graph Explorer 返回的错误消息
{
"error": {
"code": "",
"message": "No HTTP resource was found that matches the request URI 'https://outlook.office365.com:444/profile/v1.0/users('CID:a8ef4446a149de4d')/profile?api-version=AGSV1-internal'.",
"innerError": {
"date": "2020-11-30T16:51:41",
"request-id": "743030b4-8835-4a9f-9e3e-d35919a1c289",
"client-request-id": "c40cd440-d873-ba38-dce7-8669bc561e64"
}
}
}
我已经解决了。
问题
问题出在权限请求中。
我的应用设置为允许个人帐户以及 work/school 帐户。
使用个人帐户登录,我的用户无法授予 *.ReadWrite
或 *.All
权限。
当我从身份验证请求中取回令牌时,它只有 User.Read
权限。
访问所有工作用户所需的步骤
- 将 Azure 中的应用更改为仅接受 work/school 个帐户
- 当我的应用程序尝试进行身份验证时,我需要使用 work/school 帐户登录
- 现在应该可以为
User.Read.All
授予权限了
- 点击
/users
端点应该 return 所有用户
为了写入工作,我需要 register for a Partner Center MPN ID 并将其与我在 Azure 中的应用相关联。
问题
我正在尝试构建一个与 Microsoft Graph API 集成的应用程序。
我在 Azure 中有一个管理员帐户,并通过门户设置了一个新应用程序。 我已经下载并安装了 PHP SDK,并成功设置了所有内容,以便我可以成功获得用户。
我可以登录该应用程序并授予使用我的信息的权限(我请求的权限是 Directory.ReadWrite.All
,但即使只是请求 User.ReadWrite.All
对我来说也不起作用),但是,我的问题似乎是我无法访问其他用户。
以下仅returns我自己的用户:
$graph = new Graph();
$graph->setAccessToken('/* SOMETOKEN */');
$users = $graph->createRequest('GET', '/users')
->setReturnType(User::class)
->execute();
发布新用户 returns 我遇到 404 错误:
$newUser = new User();
$newUser->setAccountEnabled(true);
$newUser->setGivenName('first_name');
$newUser->setSurname('last_name');
$newUser->setUserPrincipalName('some.email@address.com');
$password = new PasswordProfile();
$password->setPassword('some_password');
$newUser->setPasswordProfile($password);
$user = $graph->createRequest('POST', '/users')
->attachBody($newUser)
->execute();
Returns:
{
"error": {
"code": "",
"message": "No HTTP resource was found that matches the request URI 'https://outlook.office365.com:444/profile/v1.0/users('CID:a8ef4446a149de4d')/profile?api-version=AGSV1-internal'.",
"innerError": {
"date": "/* timestamp */",
"request-id": "/* an id */",
"client-request-id": "/* an id */"
}
}
}
即使尝试使用 Microsoft 的 Graph Explorer 也会遇到同样的错误。
我认为这可能是帐户设置问题是否正确?
更新
这是 Graph Explorer 返回的错误消息
{
"error": {
"code": "",
"message": "No HTTP resource was found that matches the request URI 'https://outlook.office365.com:444/profile/v1.0/users('CID:a8ef4446a149de4d')/profile?api-version=AGSV1-internal'.",
"innerError": {
"date": "2020-11-30T16:51:41",
"request-id": "743030b4-8835-4a9f-9e3e-d35919a1c289",
"client-request-id": "c40cd440-d873-ba38-dce7-8669bc561e64"
}
}
}
我已经解决了。
问题
问题出在权限请求中。
我的应用设置为允许个人帐户以及 work/school 帐户。
使用个人帐户登录,我的用户无法授予 *.ReadWrite
或 *.All
权限。
当我从身份验证请求中取回令牌时,它只有 User.Read
权限。
访问所有工作用户所需的步骤
- 将 Azure 中的应用更改为仅接受 work/school 个帐户
- 当我的应用程序尝试进行身份验证时,我需要使用 work/school 帐户登录
- 现在应该可以为
User.Read.All
授予权限了 - 点击
/users
端点应该 return 所有用户
为了写入工作,我需要 register for a Partner Center MPN ID 并将其与我在 Azure 中的应用相关联。