【发布时间】:2021-05-17 15:24:08
【问题描述】:
我已经设置了 contacts.read.write 的 MS Azure API 权限,但是在执行以下代码时,我收到了这条消息:
未捕获的 GuzzleHttp\Exception\ClientException:客户端错误:
POST https://graph.microsoft.com/beta/contacts导致400 Bad Request响应:{“错误”:{“代码”:“Request_BadRequest”,“消息”:“没有类型名称的值是在 C:\Program Files\Ampps\www\weedo\weedo2\content\libraries\MicrosoftGraph\vendor\guzzlehttp\guzzle\src\Exception\RequestException.php:113 中找到并且没有预期(截断...)
我的邮编:
$graph = new Graph();
$graph
->setBaseUrl("https://graph.microsoft.com/")
->setApiVersion("beta")
->setAccessToken($this->accessToken);
$data = array(
"GivenName" => "Test",
"Surname" => "account",
"EmailAddresses" => array(
array(
"Address" => "testaccount@mail.com",
"Name" => "Mail Name"
)
)
);
$user = $graph->createRequest("POST", "/contacts")
->addHeaders(array("Content-Type" => "application/json"))
->setReturnType(Model\User::class)
->attachBody($data)
->setTimeout("1000")
->execute();
我相信我正确地遵循了这些页面,但这些示例并非都是针对 PHP 给出的,所以我不确定从这里去哪里: https://github.com/microsoftgraph/msgraph-sdk-php https://docs.microsoft.com/en-us/graph/api/user-post-contacts?view=graph-rest-1.0&tabs=http
我还将 $data 参数包装在 json_encode 中只是为了测试,但没有运气。 去哪儿?怎么办?
编辑: 因此,我似乎对组织联系人(由 /contacts 获得)和个人联系人(由 /me/contacts 获得)感到困惑。现在(尚)不支持创建组织联系人,我觉得这很可笑,但由于某种原因,我也不允许基于应用程序创建联系人。对此有何想法/想法?
【问题讨论】:
-
你的问题中的错误信息是'客户端错误:POST graph.microsoft.com/beta/contacts',当我搜索图表api docs时,我发现如果你想创建联系人,你需要使用'POST @987654325 @{userid}/联系人'。那么你检查过它是否是一个正确的网址吗?
-
嗯,当我使用 'get' 时,我确实得到了联系人而不提及 /users。
-
当我使用 /beta/me/contacts(根据文档应该可以工作)时,我收到一条无效的凭据消息,这很奇怪,因为当我使用“get”时,这一切似乎都可以工作跨度>
-
@Mart 看起来问题出在负载上。根据文档,您不应该在 emailAddress 的数组中包含数组。它应该是对象数组。相应地更改并尝试一下。
-
@Mart 我已经看到你更新的问题,我还没有找到通过应用程序而不是用户创建联系人的方法。
标签: php azure microsoft-graph-api contacts