[英]SPFx webpart in MSTeams Desktop Client throws an UnauthorizedAccessException
這個問題與之前在 StackOverflow 上提出的問題非常相似。 但是,我得到的錯誤是不同的。
在 MSTeams 桌面客戶端中使用 SPFx webpart 加載 SP 頁面時,AadHttpClient 失敗
我還有一個Sharepoint Online 網站,其中有一個使用AadHttpClient的SPFx Web 部件。
如果我從瀏覽器導航到 Sharepoint 站點或打開 MS Teams Web 客戶端,則此 Web 部件有效。
我的設置一瞥:
這是我面臨的問題的“重現步驟”概述。
當我調試 MS Teams 桌面客戶端時,我在“網絡請求”選項卡中進行了此調用:
https://{mytenant}.sharepoint.com/sites/{mysite}/_api/Microsoft.SharePoint.Internal.ClientSideComponent.Token.AcquireOBOToken?resource={GUID of my AAD app registration}&clientId={GUID of SharePoint Online Client Extensibility AAD app registration}
隨着回應:
錯誤 403:
{"odata.error":{"code":"-2147024891, System.UnauthorizedAccessException","message":{"lang":"en-US","value":"訪問被拒絕。您無權訪問執行此操作或訪問此資源。”}}}
一項有趣的觀察是,此 Web 請求僅發生在 Microsoft Teams 桌面客戶端中。
我很想知道為什么這只發生在 MS Teams 桌面客戶端中,而不是在 MS Teams Web 客戶端或 Sharepoint Online 上。
更新:10/02/2020
另一個觀察:我們在不同的租戶(個人租戶而不是我們的公司租戶)上嘗試了相同的設置。 我們注意到,當在 Azure Active Directory 上啟用 MFA 時,可能會重現相同的行為。
失敗的請求是:
https://{personal tenant}.sharepoint.com/sites/{site name}/_api/Microsoft.SharePoint.Internal.ClientSideComponent.Token.AcquireOBOToken?resource={GUID of the AD app registration}&clientId={GUID of the SPO Client Extensibility app registration}
但是,現在返回的錯誤是 500 響應:
{"odata.error":{"code":"-1, System.AggregateException","message":{"lang":"en-US","value":"發生一個或多個錯誤。"}} }
在 Github 上發現了類似的問題(但錯誤不同): https ://github.com/SharePoint/sp-dev-docs/issues/4915
我最近遇到了一個調用 graphAPI 的 Web 部件的類似問題。 在桌面團隊中,呼叫從來不會發生,而且常常會卡住。 我能夠按照以下步驟修復它:-
第 1 步。訪問租戶管理站點上新的 API 權限管理頁面。 這會在幕后創建一個客戶端機密。
步驟 2. 轉到 -> https://aad.portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps
步驟 3. 單擊SharePoint Online Client Extensibility Web Application Principal
步驟 4. 單擊左側菜單中的清單 步驟 5. 從 oAuth2Permission 數組中復制 id
"oauth2Permissions": [
{
"adminConsentDescription": "Allow the application to access SharePoint Online Client Extensibility Web Application Principal on behalf of the signed-in user.",
"adminConsentDisplayName": "Access SharePoint Online Client Extensibility Web Application Principal",
"id": "2143704b-186b-4210-b555-d03aa61823cf",
"isEnabled": true,
"lang": null,
"origin": "Application",
"type": "User",
"userConsentDescription": "Allow the application to access SharePoint Online Client Extensibility Web Application Principal on your behalf.",
"userConsentDisplayName": "Access SharePoint Online Client Extensibility Web Application Principal",
"value": "user_impersonation"
}
],
步驟 6. 將“preAuthorizedApplications”條目替換為以下 json。 保留 appId,如下所示。
"preAuthorizedApplications": [
{
"appId": "00000003-0000-0ff1-ce00-000000000000",
"permissionIds": [
"YOUR COPIED ID FROM STEP 5"
]
}
],
第 7 步。點擊保存。
如果這對你有用,請告訴我。 我從https://github.com/SharePoint/sp-dev-docs/issues/3923#issuecomment-514726341參考了上述步驟
最后我有一個解決方案:
為什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.