如何使用Microsoft Graph 365 Rest API更新用户配置文件

时间:2017-11-30 11:38:08

标签: microsoft-graph

我有一个outlook microsoft邮件帐户。我已成功使用microsoft 365 API对登录用户进行身份验证。我能够检索MSA日志记录用户的详细信息。

现在,我想在此处使用MSA文档更新登录用户信息。 的 https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_update 我已在Apps应用程序端设置了所有权限。

我想要更新的参数包括 jobTitle,mobilePhone,officeLocation

当我运行下面的代码时出现错误

{ "error": { "code": "BadRequest", "message": "Request type is not supported.", "innerError": { "request-id": "9659c539-d7c6-433f-9e9a-9d78a25570b3", "date": "2017-11-30T11:26:57" } } }

下面是代码

<?php 
session_start();


echo $acc= $_SESSION['access_token'];


echo '<br>cow<br>';


echo $_SESSION['preferred_username'];

echo    $_SESSION['given_name'];


$data_string = array("jobTitle" => 'eLECTRICAL eNGINEER', "mobilePhone" => "15087561" , "officeLocation" => "Montario"); 
$data = json_encode($data_string); 
//$data = $data_string; 
$curl = curl_init();

curl_setopt_array($curl, array( 
CURLOPT_URL => "https://graph.microsoft.com/v1.0/users/myemail@outlook.com", 
CURLOPT_RETURNTRANSFER => true, 
CURLOPT_ENCODING => "", 
CURLOPT_MAXREDIRS => 10, 
CURLOPT_TIMEOUT => 30, 
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
CURLOPT_CUSTOMREQUEST => "UPDATE", 
CURLOPT_POSTFIELDS => "$data", 
CURLOPT_HTTPHEADER => array( 
"accept: application/json", 
"authorization: Bearer $acc", 
"content-type: application/json; charset=utf-8" 
), 
));

$response = curl_exec($curl); 
$err = curl_error($curl);

curl_close($curl);



print_r($response);
$json = json_decode($response);

//$res = $json->{'items'};




if ($err) { 
echo "cURL Error #:" . $err; 
} else { 
//echo $response; 
}
?>

我不知道问题是否来自CURL请求中的URL。请帮忙

1 个答案:

答案 0 :(得分:0)

这些属性不适用于个人Microsoft帐户(MSA)user,它们仅适用于Azure Active Directory user

由于底层服务不适用,因此几个端点,方法和属性根本不适用于Microsoft帐户。例如,Planner仅适用于Office 365业务帐户,因此在使用MSA时不支持对该端点的调用。