问题标签 [office-js-helpers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure-active-directory - Azure 应用程序清单尝试使用 Outlook Web 加载项中的 office-js-helpers 进行身份验证时出现问题
我正在使用office-js-helpers以在我的 Outlook Web 加载项中获取 OAuth 令牌,因此我可以将它用于带有 EWS 托管 API 的 OAuthCredentials(其代码位于使用 ASP.NET 的 Azure 应用服务中网络 API)。
我已经在我的测试 Office 365 租户(例如 mytenant.onmicrosoft.com,这与托管 Web 应用程序的 Azure 订阅不同 - 如果这很重要)中配置了我的应用程序的应用程序注册,作为 oauth2AllowImplicitFlow 设置为 true 的本机应用程序。我使用 Native 应用程序类型而不是 Web/API 应用程序来绕过一个意外错误,该错误表明我的应用程序需要管理员同意 - 即使没有请求应用程序权限 - 但这是另一回事(也许我无论如何都必须使用 Native - 不是 100% 肯定) .
我确保应用注册中的重定向 URI(又名回复 URL)指向与 Outlook 加载项相同的页面(例如https://mywebapp.azurewebsites.net/MessageRead.html)。
这是我的应用清单:
{
"appId": "a11aaa11-1a5c-484a-b1d6-86c298e8f250",
"appRoles": [],
"availableToOtherTenants": true,
"displayName": "My App",
"errorUrl": null,
"groupMembershipClaims": null,
"optionalClaims": null,
"acceptMappedClaims": null,
"homepage": "https://myapp.azurewebsites.net/MessageRead.html",
"identifierUris": [],
"keyCredentials": [],
"knownClientApplications": [],
"logoutUrl": null,
"oauth2AllowImplicitFlow": true,
"oauth2AllowUrlPathMatching": false,
"oauth2Permissions": [],
"oauth2RequiredPostResponse": false,
"objectId": "a11aaa11-99a1-4044-a950-937b484deb8e",
"passwordCredentials": [],
"publicClient": true,
"supportsConvergence": null,
"replyUrls": [
"https://myapp.azurewebsites.net/MessageRead.html"
],
"requiredResourceAccess": [
{
"resourceAppId": "00000003-0000-0000-c000-000000000000",
"resourceAccess": [
{
"id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"type": "Scope"
}
]
},
{
"resourceAppId": "00000002-0000-0000-c000-000000000000",
"resourceAccess": [
{
"id": "311a71cc-e848-46a1-bdf8-97ff7156d8e6",
"type": "Scope"
},
{
"id": "a42657d6-7f20-40e3-b6f0-cee03008a62a",
"type": "Scope"
}
]
},
{
"resourceAppId": "00000002-0000-0ff1-ce00-000000000000",
"resourceAccess": [
{
"id": "2e83d72d-8895-4b66-9eea-abb43449ab8b",
"type": "Scope"
},
{
"id": "ab4f2b77-0b06-4fc1-a9de-02113fc2ab7c",
"type": "Scope"
},
{
"id": "5eb43c10-865a-4259-960a-83946678f8dd",
"type": "Scope"
},
{
"id": "3b5f3d61-589b-4a3c-a359-5dd4b5ee5bd5",
"type": "Scope"
}
]
}
],
"samlMetadataUrl": null
}
我还确保将授权 URL 添加到我的加载项清单中:
这是我在插件中使用 office-js-helpers 进行身份验证的代码:
现在加载项中的代码可以正确登录用户并请求所需的权限,但是在单击应用程序授权步骤上的接受按钮后,返回以下错误:
AADSTS50011:回复地址“ https://mywebapp.azurewebsites.net ”与为应用程序配置的回复地址不匹配:“a11aaa11-1a5c-484a-b1d6-86c298e8f250”。更多细节:未指定
现在每次单击登录按钮时都会返回错误(不再提示用户登录)。它从未检索过令牌。完整的授权 URL 是:
我究竟做错了什么?问题是否真的是因为 Web 应用程序的主机名(重定向 URI)与托管应用程序注册的 Azure AD 租户的域不匹配?如果是这样,我如何从托管没有 Office 365 或 Exchange Online 的 Web 应用程序的 Azure 订阅授予 Exchange Online 权限?我是否必须向我的测试 Office 365 租户添加 Azure 订阅,以便它也可以托管 Web 应用程序?
es6-promise - 无法弄清楚如何使用 OfficeExtension.Promise
目前我正在尝试使用 Microsoft 提供的 OfficeExtension.Promise polyfill 来开发 Office 加载项。不幸的是,到目前为止我无法让它工作。据我所知,这些仅在 WordApi 1.2 和 ExcelApi 1.2 中提供。由于我找不到提供这些 api 的单独节点模块,我假设这些都包含在普通的“@microsoft/office-js”节点模块中。此外,我还安装了 office-js 类型。
节点模块
导入语句
到目前为止,我已经尝试通过以下方式导入“OfficeExtension”类/命名空间。
错误
所有这些都会导致智能感知错误,指出无法找到该模块。
问题
具体问题是我不知道如何导入功能以使用 OfficeExtension.Promise polyfill。我找不到任何文档可以提供有关此主题的任何帮助,因此将不胜感激任何建议或信息。
outlook - Office.context.mailbox.item.getSelectedDataAsync 未在已安装的 Outlook 中返回所选数据
根据提供的文档,
Office.context.mailbox.item.getSelectedDataAsync(Office.CoercionType.Text, {}, getCallback)
应该从邮箱的正文或主题返回选定的数据。而是callback
返回一些 html 标记asyncResult.value.data
,此问题仅在已安装的 Outlook 中。
但是,这在浏览器应用程序中运行良好,并且可以asyncResult.value.data
正确返回所选数据。
有人可以向我解释为什么这个问题只发生在已安装的 Outlook 中吗?可能我可能遗漏了什么,请澄清。
返回的 html 标记而不是选定的数据:
截图供参考:
office-js - 启动时自动执行插件功能
我已经搜索过了,作为最后的手段,我将前往这里的专家。
我想知道以下是否可行或在未来的路线图中是否可行
- Document.open() 的预期可用日期?2.有什么方法可以打开和编辑(在线办公)One Drive 中的文档。
- 我们可以在打开文档后立即执行任何插件功能而不实际启动插件吗?
谢谢艾哈迈德
javascript - Excel 16.13 中的 Office js 对话框问题
我正在使用 Office js 库中的以下函数来显示 Excel 对话框 -
在以编程方式关闭对话框并尝试再次打开它时,它显示以下错误 -
错误代码 - 12007。已从任务窗格打开一个对话框。任务窗格加载项一次只能打开一个对话框。
该问题持续存在Microsoft Excel 16.13
。它适用于所有以前版本的 Excel。
oauth-2.0 - 使用 login.microsoft.com 的 OAuth 返回不一致的令牌
我正在使用office-js-helpers
身份验证库。使用Microsft Azure AD 2.0 Converged auth
端点,我测试了来自 AD 用户(属于 AD 租户)和在...@gmail.com
Microsoft 注册的帐户的登录。
它们都返回一个类似的有效载荷,带有一个access_token
属性。主要区别在于,对于 AD 用户,这access_token
是一个签名的 JWT,而对于非 AD 帐户,访问令牌是一个 base64 编码(并且可能是加密/编码)字符串。
我可以将任一令牌用于其他 Microsoft API,例如 Graph API,所以我没有指出错误。但是我希望将其access_token
用作我自己的 API 的 JWT。
有什么方法可以强制融合身份验证服务为所有登录返回 JWT?
有没有人处理过这个问题并想出一个明智的解决方法?
office-js - Word 加载项无法安装在 Word 2016(MSO 16.0.4266.1001 64 位)上
这些天,我发现我的加载项无法安装在 Word 2016(MSO 16.0.4266.1001 64 位)上。菜单中没有显示图标。只需打开如下窗口:
所以我去了dev.office.com发现了这个:
*注意:通过 MSI 安装的 Office 2016 的内部版本号为 16.0.4266.1001。此版本仅包含 WordApi 1.1 要求集。
这个词只在我脑海中闪过,我的加载项中使用了office-js-helpers,这是这个原因吗?
她是我在 manifest.xml 中的要求:
我想知道我的加载项在 Word 2016(MSO 16.0.4266.1001 64 位)上不可用的原因。有任何想法吗?谢谢你的帮助!
javascript - 使用带有 office-js-helpers 身份验证器的 msgraph-sdk-javascript 的令牌错误
我有一个使用 React + TypeScript 的 Outlook 插件,使用 Node.js 在本地进行调试。我正在使用 office-js-helpers 库进行身份验证和 msgraph-sdk-javascript Graph 客户端库。作为 POC,我只是试图通过通过其 id 检索当前电子邮件的详细信息来验证我是否可以成功调用 Graph。我可以成功使用 office-js-helpers Authenticator 授权应用程序,并成功检索令牌。
但是,当我使用 Graph 客户端调用 时v1/me/messages/{ID}
,我得到:
“401 InvalidAuthenticationToken:访问令牌验证失败”
我不确定这是我使用身份验证器的方式有问题,还是我的加载项或应用程序清单有问题。我的加载项将这些用于AppDomains
:
我正在使用https://localhost:3000
我的应用程序的重定向 URI,并启用了隐式身份验证。
如果我将 force 选项与 authenticate 方法一起使用,我也会收到此错误:
无法在“DOMWindow”上执行“postMessage”:提供的目标来源(“ https://login.microsoftonline.com ”)与收件人窗口的来源(“ https://localhost:3000 ”)不匹配。
但是,我能够检索令牌。
我究竟做错了什么?我不确定 Authenticator 的流程,何时使用authenticator.tokens.get
和authenticator.authenticate
. 对于第一次运行,我假设始终进行身份验证并且不需要使用tokens.get
,而对于第二次运行,我假设只使用tokens.ge
t,但是如果我尝试其中任何一个或始终尝试两者,它似乎不会改变无效令牌的结果。
powerpoint - 用于“离网”客户的插件
我为我们公司开发了一个插件,它基本上将我们应用程序的一部分加载到 iframe 中。这很好,但是我们有一个政府客户,他的用户基本上没有上网,即没有外部互联网访问,加载项的 web 应用程序部分托管在建筑物内的内部 web 服务器上,但我无法加载在他们的PowerPoint应用程序中加载?这是因为没有互联网访问吗?
我知道清单具有指向架构的必需链接,例如: xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
这会是问题的原因吗?如果是这样,是否有解决方法?即在本地托管模式
TIA