我试图使用create subscription API来打开一个日历事件的订阅通道,这样我们就可以在面试者对面试做出回应时收到更新。
我已经尝试了许多不同的方法来实现这个请求:
我已经完成了oauth流程,为具有以下权限范围的用户检索图形访问令牌:
邮件.发送
日历.读写.共享
用户.读基本.全部
使用上述范围的访问令牌,在尝试创建订阅之前,我将带有< code>{eventId}的事件添加到共享日历中,假设用户相对Id为< code>{sharedCalendarId}。
使用相同的访问令牌创建具有上面列出的权限范围的相同授权头,我始终收到相同的< code>ExtensionError响应。下面我将列出我对graph API的请求的各种排列。
已尝试的网址
我已经将订阅帖子请求的每个排列发送到以下URL:
请求标题
内容类型: 应用程序/json
授权: Bearer {authToken}
请求机构尝试
change eType
和通知Url
和expirationDateTime
对于所有请求都是相同的。我尝试了资源
字符串的3种不同变体,并尝试了带有和不带有clientState
的请求。
首先,我尝试了完全识别的资源并添加了客户端状态
:
{
"changeType": "created,updated",
"notificationUrl": "https://{domain-with-valid-https-certs}/calendar/microsoft/notifications",
"resource": "users/{userPrincipalName}/calendars/{sharedCalendarId}/events",
"clientState": "{thisIsLimitedTo128Characters}",
"expirationDateTime": "2018-05-23T21:02:45.487Z"
}
接下来,为了缩小问题范围,我放弃了<code>clientState而不是{userPrincipalName}:
{
...
"resource": "me/calendars/{sharedCalendarId}/events"
}
然后我放弃了共享日历,看看这是否是问题所在,并使用了文档中的示例资源。
{
...
"resource": "me/events"
}
虽然我似乎收到了对通知Url
提供的验证请求(并且服务器做出了适当的响应),但创建订阅的请求随后以此类错误进行响应:
{
code: "ExtensionError",
message: "Operation: Create; Exception: [Status Code: Forbidden; Reason: Forbidden]",
innerError: {
"request-id": "0d86a983-ea50-4226-905c-38f0e8f12308",
date: "2018-05-23T03:55:38"
}
}
令人困惑的是,我试图在我刚刚成功创建或更改的日历和事件上创建此订阅,因此403
似乎与访问资源无关。
是否需要授予特定的权限或作用域,以便我们成功创建日历事件的订阅?我们是否应该使用不同的API?
对于有类似问题但不想深入评论的人,请在这里自我回答。
经过Marc LaFleur和Jason Johnston的一些调试帮助(感谢回复!),我的具体问题的答案是“有点”。
不,没有特定的订阅。*
范围,创建订阅通道不需要它们。
但是,确切地说,POST /订阅
创建终结点需要比资源本身更具体的权限范围。
在我的示例中,“日历”.ReadWrite.“共享
”权限确实允许我的应用在用户的日历和共享日历中读取和写入事件,但我无法为同一日历创建订阅频道。
除了之外,请求
解决了我的问题。Calendars.ReadWrite
不那么宽松和更具体的范围Calendars.ReadWrite.Shared
为了订阅资源,您至少需要对资源的读取权限。因此对于事件,您需要Calendars.Read
。因为您有更多,所以应该没问题。(参考)
我相信你的问题是你没有在有效负载中包含expirationDateTime
。这是一个必需的属性(这里有记录,可以说不是列出它的最佳位置)。将其设置为等于或小于日历的最大值,4230分钟(参考)。
我有两个版本的应用程序: > 没有广告。 我的应用程序中有订阅。我想在这些应用程序之间共享一个订阅。例如这样一个场景: 用户在应用程序中购买带有广告的订阅,然后购买没有广告的应用程序。我想将第一个应用程序中的订阅分享给第二个应用程序。有没有可能使用标准的谷歌账单库?
创建一个条纹客户非常容易,将一张卡与该客户关联起来,然后随时向他们收费。然而,使用Laravel出纳之后,在任何时候订阅用户的计划都不那么容易。 当用户在“我的设置”中添加卡时,会生成卡令牌。我已尝试在此时存储令牌,并在用户希望更新其订阅时使用它,但出现错误:
我需要创建对的订阅,该订阅在第一次调用时立即被处理掉。 有没有像这样的东西: 我的用例是,我正在一个快速路由处理程序中创建一个订阅,每个请求都会多次调用该订阅。
我想将架构导入我的新主机。首先,我创建了新的用户帐户: 我需要授予什么样的特权才能拥有超级角色? (创建模式,表,包,触发器等) 允许我访问所有这些是一种特权?
当我知道observable在组件/类超出作用域之前肯定会完成(使用或通知)时,我还需要取消订阅它以防止内存泄漏吗?换句话说,是否自动完成/错误的可观察清理,这样我就不用担心了?
我目前正在尝试将我的应用程序迁移到firebase,我正在寻找firebase的解析安装和通道。 我发现我们应该使用主题,但在我的应用程序中,“订阅”和“取消订阅”主题很常见,但没有办法(我发现)看到用户订阅了哪些主题。有什么想法吗? 我已经阅读了Firebase文档,但我是Firebase新手,因此可能有更多经验的人会知道:https://firebase.google.com/docs/clo