使用OfficeJS API的getAccessTokenAsync
方法我试图获取访问令牌。但是在使用开发者工具进行调查之后 - > network我收到了getAccessTokenAsync
回调中被触发的请求。当我将它与手动构建的工作URL进行比较时,我发现一些参数完全不同。例如,第一个网址中的ID bc59ab01-8403-45c6-8796-ac3ef710b3e3
是错误的,应该是bc59ab01-8403-45c6-8796-ac3ef710b3e3
(此ID在Azure AD和清单中注册)。为什么它生成的URL正在获取我的项目中无处可用的ID,以及为什么它不起作用?
getAccessTokenAsync
生成的请求(无效)
https://login.microsoftonline.com/common/oauth2/authorize?response_type=token&client_id=bc59ab01-8403-45c6-8796-ac3ef710b3e3&resource=api%3A%2F%2Flocalhost%3A3000%2Fc64ded7d-29e6-4083-8afa-351c7a630668&redirect_uri=https%3A%2F%2Foutlook.office.com%2Fowa%2FextSSO.aspx&state=5e7fc82d-190f-4817-8159-25caf2b58687%7Capi%3A%2F%2Flocalhost%3A3000%2Fc64ded7d-29e6-4083-8afa-351c7a630668&client-request-id=32957e85-9ebe-44b9-b8b2-d67ec469f19e&x-client-SKU=Js&x-client-Ver=1.0.15&prompt=none&login_hint=<myEmail>&domain_hint=<domain>
手动构建(工作)
https://login.microsoftonline.com/<nameOfCompany>.onmicrosoft.com/oauth2/v2.0/authorize?client_id=c64ded7d-29e6-4083-8afa-351c7a630668&response_type=token&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2F&scope=https://graph.microsoft.com/user.read%20https%3A%2F%2Fgraph.microsoft.com%2Fmail.read&response_mode=fragment&state=12345&nonce=678910
manifest.xml中的WebApplicationInfo元素
<WebApplicationInfo>
<Id>c64ded7d-29e6-4083-8afa-351c7a630668</Id>
<Resource>api://localhost:3000/c64ded7d-29e6-4083-8afa-351c7a630668</Resource>
<Scopes>
<Scope>files.read.all</Scope>
<Scope>profile</Scope>
</Scopes>
</WebApplicationInfo>
答案 0 :(得分:1)
这有点太复杂了,无法发表评论,所以我现在就回答。
请澄清“不工作”的含义。 getAccessTokenAsync
返回了什么错误?
在我看来,您的手动请求正在为加载项(c64ded7d-29e6-4083-8afa-351c7a630668
)获取MS Graph的访问令牌。这与getAccessTokenAsync
的作用并不相同。 getAccessTokenAsync
获取一个访问令牌,该访问令牌为 Office主机提供访问您的加载项。 Office Online客户端ID为bc59ab01-8403-45c6-8796-ac3ef710b3e3
,因此预计这是Office将在其请求中使用的客户端ID。 (在文章Create SSO Office Add-ins中搜索该GUID。)另外,请注意c64ded7d-29e6-4083-8afa-351c7a630668
在该请求的“资源”的值中,这是预期的,因为您的加载项是资源Office主机需要访问权限。
要访问 Graph ,您需要服务器端代码交换从getAccessTokenAsync
获得的令牌,以获取一个访问令牌,该令牌可以提供您的添加在中使用“代表”流程访问到 MS Graph。在该事务中,您的加载项是客户端,Graph是资源。有关详细信息,请参阅文章SSO in Office Add-ins