我想将google 文档集成到网络应用程序(Angular 10)中以进行预览、编辑和保存。
我的服务器上存储有文档。我想使用存储在我的服务器上的谷歌文档预览文档(它可以存储在 Amazon S3 或 Azure 等)。
我想使用谷歌文档编辑该文档并将其保存回我的服务器(用户使用谷歌凭据登录并获得所有权限)。
我知道这一点: https: //docs.google.com/a/[DOMINIO]/viewer?url=[FILE_URL],但它用于预览,文件大小限制为 25 MB。
基本上我需要集成谷歌文档以在我的网络应用程序中预览、编辑和保存文档。
我想通过 Microsoft Office 365(需订阅)实现相同的功能。
如何实现这一目标?
google-docs google-docs-api google-document-viewer office365api angular
我已经使用统一 API 的测试版来获取尺寸为 48x48 的用户个人资料图片。现在我正在使用 Microsoft Graph API 并尝试获取此尺寸的个人资料图片。但我只得到 648x648 的...有没有办法得到 48x48 的图片?
这是我的要求:
https://graph.microsoft.com/v1.0/users/user@domain.com/photo
Run Code Online (Sandbox Code Playgroud)
这里是文档: http://graph.microsoft.io/docs/api-reference/v1.0/api/profilephoto_get
提前致谢!
此致,
阿杰
我正在尝试使用带有以下代码的Office 365统一API列出用户:
$TenantID = "xxx"
$F_ClientID = "yyy"
$F_ClientSecret = "zzz"
Add-Type @'
using System;
public class OAuthContext{
public string AccessToken{get;set;}
public string TokenType{get;set;}
public string ExpiresIn{get;set;}
public string RefreshToken{get;set;}
}
'@
$Uri = "https://login.microsoftonline.com/$($TenantID)/oauth2/token"
$ContentType = 'application/x-www-form-urlencoded'
$Headers = @{}
$Body = [System.Text.Encoding]::UTF8.GetBytes('grant_type=client_credentials&client_id='+$F_ClientID+'&client_secret='+$F_Clie ntSecret+'&resource"=https://graph.microsoft.com')
$Response = Invoke-RestMethod -Method POST -Uri $Uri -Headers $Headers -ContentType $ContentType -Body $Body
$Response
$Context = New-Object OAuthContext
$Context.AccessToken = $Response.access_token
$Context.ExpiresIn = $Response.expires_in
$Context.RefreshToken = $Response.refresh_token
$Context.TokenType = $Response.token_type
$Context
$Headers = @{}
$Headers.Add('Authorization',$Context.TokenType …Run Code Online (Sandbox Code Playgroud) powershell office365 office365api azure-ad-graph-api office365-restapi
目前,我的任务窗格使用Ribbon ShowTaskPane命令显示.
<Action xsi:type="ShowTaskpane">
Run Code Online (Sandbox Code Playgroud)
如何在Javascript中隐藏任务窗格?
干杯!
我需要进行以下POST调用.但是,即使我提供了正确的客户端ID和密码ID,我的电话也会被拒绝.
curl POST https://login.microsoftonline.com/f02....e3/oauth2/token
-H 'Content-Type: application/x-www-form-urlencoded' --data 'grant_type=authorization_code&redirect_uri=https://requestb.in/ac&
source=https://graph.microsoft.com&client_id=1e1....-913d9
&client_secret=YmbSFYz.....4Uk=&scope=mail.read&code=AaAAA........on0a569'
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误:
curl: (6) Could not resolve host: POST
{"error":"invalid_client","error_description":"AADSTS70002:
Error validating credentials. AADSTS50012: Invalid client secret is
provided.\r\nTrace ID: 78d...a2b\r\nCorrelation ID:
01....ab2\r\nTimestamp: 2016-12-14 01:46:47Z","error_codes":[70002,50012],"timestamp":"2016-12-14 01:46:47Z","trace_id":"78d....a2b","correlation_id":"018.....ab2"}
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个问题?
编辑:我正在尝试在本文档中实现第二部分(即获取令牌)
在尝试创建用于批量更新用户日历的deamon应用程序时,我偶然发现了以下文档:
由于您似乎可以在"不要将此API用于新项目API"中批量(也称合并)最多20个请求,但您最多只能使用新的Microsoft Graph API组合5个请求.
我发现没有批处理创建和删除100个日历项目大约需要40秒.由于应用程序管理变得如此简单,我想使用新的API,但是有没有任何更改,5请求批量限制将被删除,让我们说20就像旧的API一样?
我需要为两个用户 - John 和 Harry 之间的电子邮件交换找到 sessionId。在我的场景中:
我可以拨打这样的电话:GET /me/messages?$filter=internetMessageId eq abcd
我正在使用 Office 365 邮件 Microsoft Graph API ,尝试按照文档创建新消息:
https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/user_post_messages
POST https://graph.microsoft.com/beta/me/messages
Content-type: application/json
{
"subject":"Did you see last night's game?",
"importance":"Low",
"body":{
"contentType":"HTML",
"content":"They were <b>awesome</b>!"
},
"toRecipients":[
{
"emailAddress":{
"address":"AdeleV@contoso.onmicrosoft.com"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
{ 输出:
"@odata.context":"https://graph.microsoft.com/beta/$metadata#users('ad787b4f-1fda-4523-8e48-ffedb7f4635f')/messages/$entity",
"@odata.etag":"W/\"CQAAABYAAAAmXr9SsE/UR4PcnTZcg7qWAAAFS12t\"",
"id":"AAMkAGRWAAAFSmKXAAA=",
"createdDateTime":"2017-12-23T07:29:57Z",
"lastModifiedDateTime":"2017-12-23T07:29:58Z",
"changeKey":"CQAAABYAAAAmXr9SsE/UR4PcnTZcg7qWAAAFS12t",
"categories":[
],
"receivedDateTime":"2017-12-23T07:29:58Z",
"sentDateTime":"2017-12-23T07:29:58Z",
"hasAttachments":false,
"internetMessageId":"<MWHPR130@MWHPR130.namprd13.prod.outlook.com>",
"subject":"Did you see last night's game?",
"bodyPreview":"They were awesome!",
"importance":"low",
"parentFolderId":"AAMkAGRWAAAAAAEPAAA=",
"conversationId":"AAQkAGRVYAsRJrRdc_mWNaxU=",
"conversationIndex":"AQHTe7/VAniOJVgCxEmtF1z6ZY1rFQ==",
"isDeliveryReceiptRequested":false,
"isReadReceiptRequested":false,
"isRead":true,
"isDraft":true,
"webLink":"https://outlook.office365.com/owa/?ItemID=AAMkAGRWAAAFSmKXAAA%3D&exvsurl=1&viewmodel=ReadMessageItem",
"inferenceClassification":"focused",
"unsubscribeData":[
],
Run Code Online (Sandbox Code Playgroud)
我看到的输出是收件箱中创建的草稿邮件。
我尝试使用 "isDraft":false 发布,但不幸的是结果相同:(
基本上我的目的是“恢复”原始收件箱消息,这意味着在收件箱中创建它们而不发送......我用 EWS 做到了,现在试图转换成图形 api
那么,是否有任何选项可以创建不是 Draft …
需要创建当前用户不是组织者的活动。我尝试使用以下代码来创建事件:
var eventsEndPoint=New Uri("https://graph.microsoft.com/v1.0/users/johndoe@some.com/events");
var postBody="{'Subject':'Testing Organizer - 12','Location':{'DisplayName':'Some place'}," +
"'Start': {'DateTime': '2016-07-15T15:00:00.0000000', 'TimeZone':'UTC'}," +
"'End': {'DateTime': '2016-07-15T15:30:00.0000000', 'TimeZone':'UTC'},"+
"'Body':{'Content': 'This is a test of Grap API.', 'ContentType':'Text'},"+
"'IsOrganizer':'False','Organizer':{'EmailAddress': "+"{'Address':'organizer@some.com'} }}";
var createBody = new StringContent(postBody, system.Text.Encoding.UTF8, "application/json");
HttpResponseMessage response = await httpClient.PostAsync(eventsEndPoint, createBody);
Run Code Online (Sandbox Code Playgroud)
事件已创建,但无论 IsOrganizer=false 且组织者设置为与创建事件的用户 (johndoe@some.com) 不同的用户,响应始终显示 IsOrganizer 设置为 true 且组织者用户是同一用户,而不是同一用户根据要求在组织者属性中设置的一个。
是否可以使用 Graph 设置不同的组织者?
我在弄清楚如何使用 office365 api 获取给定conversationId.
假设我的对话 ID 是 AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow=
我会提出这样的要求
https://outlook.office.com/api/v1.0/me/Messages?$filter=ConversationId%20eq%20AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow=
Run Code Online (Sandbox Code Playgroud)
这会导致如下400响应:
{
"error": {
"code": "RequestBroker-ParseUri",
"message": "Syntax error at position 98 in 'ConversationId eq AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow='."
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了其他事情,例如 url 编码的 sessionIdAAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow%3D导致相同的错误。
我还尝试简单地删除=似乎是吓坏它的角色
https://outlook.office.com/api/v1.0/me/Messages?$filter=ConversationId%20eq%20AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow
Run Code Online (Sandbox Code Playgroud)
但这会导致以下错误
{
"error": {
"code": "RequestBroker-ParseUri",
"message": "Could not find a property named 'AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow' on type 'Microsoft.OutlookServices.Message'."
}
}
Run Code Online (Sandbox Code Playgroud)
我还尝试弄乱 url 大写并使用+符号代替%20过滤器字符串,但我始终收到 400 个错误。
不过,我可以按其他字段进行过滤。例如
https://outlook.office.com/api/v1.0/me/Messages?$filter=IsRead%20eq%20true
Run Code Online (Sandbox Code Playgroud)
返回按我预期过滤的消息。
知道ConversationId过滤器会发生什么吗?
office365api ×10
office365 ×6
angular ×1
azure ×1
c# ×1
curl ×1
email ×1
google-docs ×1
office-js ×1
outlook ×1
powershell ×1