我尝试在 Java 上使用 Microsoft Graph。我成功获得了访问令牌。
但是,当我通过 HttpURLConnection 使用此令牌时,我的访问被拒绝并从 Microsoft 服务器捕获了 400 错误。
HttpURLConnection con = null;
String url_str = "https://graph.microsoft.com/v1.0/me";
String bearer_token = "EwA4A8l6BA...";
URL url = new URL(url_str);
con = ( HttpURLConnection )url.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
con.setRequestMethod("GET");
con.setRequestProperty("Authorization","Bearer " + bearer_token);
con.setRequestProperty("Host","graph.microsoft.com");
con.connect();
BufferedReader br = new BufferedReader(new InputStreamReader( con.getInputStream() )); // Error has been occured here.
String str = null;
String line;
while((line = br.readLine()) != null){
str += line;
}
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)
这是错误消息。
线程“main”java.io.IOException 中出现异常:服务器返回 HTTP 响应代码:400 对于 …
我正在构建一个使用 Microsoft Graph API 进行身份验证的 Azure Functions 应用程序。我创建了一个processCode函数作为我的重定向 URI,它采用 Graph API 发送的代码来生成 Graph 令牌。
但是,Azure Functions 在其调用中使用code查询字符串参数来传递函数键。
我是否可以将 Graph API 重定向 URI 配置为使用除 之外的其他查询字符串参数code?
本质上,改变
https://myapp/api/processCode?code=GRAPH-CODE (conflicting code parameter)
Run Code Online (Sandbox Code Playgroud)
到
https://myapp/api/processCode?code=FUNCTIONS-KEY&graphcode=GRAPH-CODE
Run Code Online (Sandbox Code Playgroud) 我正在使用 Microsoft Graph 与 Outlook 连接。有人可以帮我解决我的问题吗?我需要添加多个ccRecipient和bccRecipient。我的网络应用程序通过 API 发送、接收和读取电子邮件。但我无法向多个收件人发送cc电子邮件bcc。这是我用来发送电子邮件的功能。
编辑:现在 JSON 中的函数没有 2ccRecipients和 2 bccRecipients 。我尝试了多种不同的方式,但是当我在 microsoft graph-explorer 中测试它时,它无法发送到多个地址。
function sendEmail(){
getAccessToken(function(accessToken) {
if (accessToken) {
// Create a Graph client
var client = MicrosoftGraph.Client.init({
authProvider: (done) => {
// Just return the token
done(null, accessToken);
}
});
var recipient = $("#recipient").val();
var subject = $("#subject").val();
var carbon_copies = $("#carbon_copies").val();
var blind_carbon_copies = $("#blind_carbon_copies").val();
var filename_attachment = $("#filename").text();
var attachments_base64 = …Run Code Online (Sandbox Code Playgroud) 我们使用 Microsoft Graph API 将 Outlook 集成到我们的 iOS 应用程序中。我们有一个用例,必须按附件名称或主题过滤 Outlook 邮件。我们使用查询参数来命中图形 API。
\n\n链接到微软文档。
\n\n根据上述文档,$search参数用于过滤 Outlook 消息。当点击以下 API 时,我们会得到错误的响应。它\xe2\x80\x99s 返回主题和邮件正文中都有\xe2\x80\x9cTest Mail\xe2\x80\x9d 的邮件。但它应该只返回主题行为 \xe2\x80\x9cTest Mail\xe2\x80\x9d 的邮件。
https://graph.microsoft.com/v1.0/me/messages?$search="subject:Test Mail\xe2\x80\x9d \nRun Code Online (Sandbox Code Playgroud)\n\n当我们通过点击下面的 API 按附件名称过滤邮件时,我们也会遇到同样的问题。事实上,在这种情况下我们得到的是空响应。
\n\nhttps://graph.microsoft.com/v1.0/me/messages?$search=\xe2\x80\x9cattachments:test.png\xe2\x80\x9d \nRun Code Online (Sandbox Code Playgroud)\n\n上述 URL 格式是否正确?为什么我们\xe2\x80\x99没有得到期望的响应?请帮助我们解决这个问题。
\n我可以获取 OneNote 笔记本的内容,但无法从页面获取 InkNode 内容。页面内容返回的 HTML 有一个 HTML 注释,表明不支持 InkNode。
知道什么时候会实施吗?
我目前正在使用microsoft-php-sdk,它非常好。我已成功将小文件从服务器上传到 OneDrive。但当我尝试上传 38MB 的 Powerpoint 文件时却失败了。Microsoft Graph API 文档建议创建上传会话。我以为这就像将 URI 从/content更新到 / createUploadSession一样简单,但它仍然失败。
$response = $graph->createRequest('POST', '/me/drive/root/children/'.basename($path).'/createUploadSession')
->setReturnType(Model\DriveItem::class)
->upload($path);
Run Code Online (Sandbox Code Playgroud)
我的代码看起来像这样。我很难弄清楚 PHP SDK 文档,并且没有上传会话的示例。有人用过 PHP SDK 来实现这个场景吗?
我正在使用 MS Graph 客户端,但在预览共享项目时遇到了麻烦。
ItemPreviewInfo preview = await graphClient.Me.Drive.Items[id].Preview().Request().PostAsync();
Run Code Online (Sandbox Code Playgroud)
给出不存在此类文件的错误,因为它不在我的驱动器中,所以很明显。我知道我可能需要访问共享文件夹,但“raphClient.Me.Drive.SharedWithMe...”没有给出任何项目 ID 规范。
任何帮助,将不胜感激。先感谢您。
我们正在为多家公司集成 Azure AD。作为这项工作的一部分,我们必须询问他们系统中的哪些字段需要映射到我们的系统。
因为人们实际上并不每天使用系统名称,所以我们遇到的大多数人对此一无所知。
给定正确的凭据,是否可以获取 User 对象可以返回的所有属性,或者是否已经存在预定义列表?
我能找到的最接近的是这个,但网址显示“以前的版本”,所以我不确定它是否已更改。
我尝试使用 API 通过 API 查找它$select=*,但您可能知道,这只会给出默认的属性列表。
我希望使用图形 API 发送带有大附件(最多 20MB)的电子邮件。有没有办法发送带有大附件的电子邮件?
之前对 Graph 的尝试发现了 4MB 的上传限制。我还考虑过将文件上传到 OneDrive 并通过引用附加它,但我相信这会遇到相同的 4MB 限制。
此限制排除了 Microsoft Graph。
我听说旧版 Outlook REST API 能够处理大型文件上传,但是,我今天找不到任何访问 Outlook REST API 的方法,看起来它已被弃用。此外,我从 Microsoft 读到的所有文档都很快鼓励您使用新的 Graph API。
查看 Azure 门户,似乎无法让我的应用程序通过 Outlook API 进行身份验证,这在任何地方都不是一个选项。
作为参考,这里是我一直在 Graph API 中使用的相关片段。
$mailBody = ...
'attachments' => [
[
'@odata.type' => '#microsoft.graph.fileAttachment',
'Name' => 'file.docx',
'ContentBytes' => $localFile
]
]
...
$response = $this->getGraph()->createRequest("POST", "/users/{primary-user}/sendMail")
->attachBody($mailBody)
->execute();
Run Code Online (Sandbox Code Playgroud) 我正在使用对 Microsoft Graph 的 httpClient 调用的旧实现来获取用户的照片。以下代码可以工作,但我现在使用的是 Graph Client SDK,并且操作略有不同。我在转换代码时遇到了困难,因为在线示例和其他参考文献似乎没有相同的方法。
var response = await httpClient.GetAsync($"{webOptions.GraphApiUrl}/beta/me/photo/$value");
byte[] photo = await response.Content.ReadAsByteArrayAsync();
return Convert.ToBase64String(photo);
Run Code Online (Sandbox Code Playgroud)
var graphServiceClient = await graphClient.GetAuthenticatedGraphClientAsync(HttpContext);
Stream photo = await graphServiceClient.Me.Photo.Content.Request().GetAsync();
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这里和这里的示例,但我有点迷失,因为ReadAsByteArrayAsync()在新对象上不可用photo。