"webUrl" 发送文件邀请时显示为空 - 图 API(发送共享邀请)
"webUrl" coming as null when sending an file invitation - Graph API (Send a sharing invitation)
我正在使用来自 MS GRAPH 的邀请 API - Invite LINK
发送共享邀请 – 外部用户
- POST /me/drive/items/{item-id}/邀请
- POST/sites/{siteId}/drive/items/{itemId}/invite
上述请求的响应returns 200 OK响应码和一个permission对象被返回,但是link对象下的Sharing link(webUrl) returns 大多数时候为“null”,因此可共享 link 无法共享给外部用户以编辑文档。
请求正文:
{
"recipients": [
{
"email": "abc@abc.com"
}
],
"message": "Here's the file that we're collaborating on.",
"requireSignIn": true,
"sendInvitation": false,
"roles": [ "write" ]
}
这里我不想通过邮件共享项目,因此将 sendInvitation 设置为 false 并使用从响应中收到的 webURL 进行协作。
观察:
它适用于 gmail 和 outlook 帐户。
对于企业帐户,接收 url 为 null 无效。
样本:
- 如果我是第一次邀请,我收到的回复会低于回复,
示例例外响应:
</p>
<pre><code>{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(permission)",
"value": [
{
"@odata.type": "#microsoft.graph.permission",
"roles": [
"write"
],
"grantedToIdentities": [
{
"user": {
"email": "#####@####.com"
}
}
],
"invitation": {
"signInRequired": true
},
"link": {
"type": "edit",
"webUrl": "https://**********encryptedURL*****/"
}
}
]
}
- 从第二次开始link对象没有出现在响应中,
在没有 webURL 的情况下收到的示例响应:
</p>
<pre><code>{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(permission)",
"value": [
{
"@odata.type": "#microsoft.graph.permission",
"id": "###############",
"roles": [
"write"
],
"grantedTo": {
"user": {
"email": "######@######.com",
"id": "#############",
"displayName": "@@@@@@@"
}
}
}
]
}
我使用上传 API LINK 解决了我的问题
, 上传成功后 API returns response 将有 "webUrl" link 可用于第二次分享。
(After exploring more with MS GRAPH API's observed that if we are
sharing the same file multiple times it will not give any new link as
the old link only can be used )
实际流程:上传文件 -> 共享文件(每次都发生这种情况)
更改逻辑:第一次:上传文件 -> 共享文件
第二次以后:由于文件已共享,使用来自上传 API 的 url 响应
由于文件已经第一次与用户共享,因此可以使用我们从上传 API 获得的响应 url,此 url 可以通过以下方式访问已共享用户。
所以我改变了我的逻辑,如果用户是第一次执行该操作,那么我将上传文件并与他共享,如果用户想再次执行相同的操作而不是使用上传响应再次共享文件 url 对我有用。
发布此解决方案,因为它可能对某人有帮助
我正在使用来自 MS GRAPH 的邀请 API - Invite LINK
发送共享邀请 – 外部用户
- POST /me/drive/items/{item-id}/邀请
- POST/sites/{siteId}/drive/items/{itemId}/invite
上述请求的响应returns 200 OK响应码和一个permission对象被返回,但是link对象下的Sharing link(webUrl) returns 大多数时候为“null”,因此可共享 link 无法共享给外部用户以编辑文档。
请求正文:
{
"recipients": [
{
"email": "abc@abc.com"
}
],
"message": "Here's the file that we're collaborating on.",
"requireSignIn": true,
"sendInvitation": false,
"roles": [ "write" ]
}
这里我不想通过邮件共享项目,因此将 sendInvitation 设置为 false 并使用从响应中收到的 webURL 进行协作。
观察: 它适用于 gmail 和 outlook 帐户。 对于企业帐户,接收 url 为 null 无效。
样本:
- 如果我是第一次邀请,我收到的回复会低于回复,
示例例外响应:
</p>
<pre><code>{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(permission)",
"value": [
{
"@odata.type": "#microsoft.graph.permission",
"roles": [
"write"
],
"grantedToIdentities": [
{
"user": {
"email": "#####@####.com"
}
}
],
"invitation": {
"signInRequired": true
},
"link": {
"type": "edit",
"webUrl": "https://**********encryptedURL*****/"
}
}
]
}
- 从第二次开始link对象没有出现在响应中,
在没有 webURL 的情况下收到的示例响应:
</p>
<pre><code>{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(permission)",
"value": [
{
"@odata.type": "#microsoft.graph.permission",
"id": "###############",
"roles": [
"write"
],
"grantedTo": {
"user": {
"email": "######@######.com",
"id": "#############",
"displayName": "@@@@@@@"
}
}
}
]
}
我使用上传 API LINK 解决了我的问题 , 上传成功后 API returns response 将有 "webUrl" link 可用于第二次分享。
(After exploring more with MS GRAPH API's observed that if we are sharing the same file multiple times it will not give any new link as the old link only can be used )
实际流程:上传文件 -> 共享文件(每次都发生这种情况)
更改逻辑:第一次:上传文件 -> 共享文件
第二次以后:由于文件已共享,使用来自上传 API 的 url 响应
由于文件已经第一次与用户共享,因此可以使用我们从上传 API 获得的响应 url,此 url 可以通过以下方式访问已共享用户。
所以我改变了我的逻辑,如果用户是第一次执行该操作,那么我将上传文件并与他共享,如果用户想再次执行相同的操作而不是使用上传响应再次共享文件 url 对我有用。
发布此解决方案,因为它可能对某人有帮助