为什么我无法仅在 Edge 浏览器中通过 Sharepoint 自定义 Web 部件使用 Microsoft Graph Explorer 进行身份验证
Why I am not able to authenticate with Microsoft Graph Explorer through Sharepoint Custom Web Part only in Edge Browser
我已经在 Sharepoint online 上部署了一个自定义 Web 部件,我在其中使用 Microsoft Graph Explorer 进行了身份验证。
已在 Chrome、IE 和 Firefox[ 中成功通过 Sharepoint 自定义 Web 部件进行身份验证 但未在 Edge.
中进行身份验证
在 Edge 中出现以下错误:
description: "Invalid argument"
message: "Invalid argument"
number: -2147418113
stack: "TypeError: Invalid argument at Anonymous function (https://spoprod-a.akamaihd.net/files/sp-client-prod_2019-05-31.012/sp-pages-assembly_en-us_80b161431b1b8ce356b58dd5ab1df0cc.js:1178:42819)
这是我的方法,我发现在调用 Microsoft Graph Explorer API("https://graph.microsoft.com
") 时,在 Chrome、IE 和 Firefox API 提供响应,但在 Edge 中它进入 catch 部分并抛出错误。
private _getListApplications(param): Promise<any> {
return this.context.aadHttpClientFactory.getClient('https://graph.microsoft.com')
.then((client: AadHttpClient) => {
return client.get("https://graph.microsoft.com/beta/applications",AadHttpClient.configurations.v1);
}).then((responseListAllApps: SPHttpClientResponse) => {
return responseListAllApps.json();
}).catch(err => { console.log('errr', err); });
}
感谢任何帮助。
我在 sharepoint.stackexchange 上问过同样的问题,我得到了适合我的答案。
看起来 back-end 中有一些变化,因此代码在 Edge 和 IE 中有点停止工作。
作为解决方法,目前建议您明确设置 header 值。
您需要为 header 添加以下代码,不要忘记从 @microsoft/sp-http
模块导入 ISPHttpClientOptions
:
let httpOptions: ISPHttpClientOptions = {
headers: {
"accept": "application/json",
"content-type": "application/json"
}
};
之后你的完整代码如下:
private _getListApplications(param): Promise<any> {
let httpOptions: ISPHttpClientOptions = {
headers: {
"accept": "application/json",
"content-type": "application/json"
}
};
return this.context.aadHttpClientFactory.getClient('https://graph.microsoft.com')
.then((client: AadHttpClient) => {
return client.get("https://graph.microsoft.com/beta/applications",AadHttpClient.configurations.v1, httpOptions);
}).then((responseListAllApps: SPHttpClientResponse) => {
return responseListAllApps.json();
}).catch(err => { console.log('errr', err); });
}
我已经在 Sharepoint online 上部署了一个自定义 Web 部件,我在其中使用 Microsoft Graph Explorer 进行了身份验证。
已在 Chrome、IE 和 Firefox[ 中成功通过 Sharepoint 自定义 Web 部件进行身份验证 但未在 Edge.
中进行身份验证在 Edge 中出现以下错误:
description: "Invalid argument"
message: "Invalid argument"
number: -2147418113
stack: "TypeError: Invalid argument at Anonymous function (https://spoprod-a.akamaihd.net/files/sp-client-prod_2019-05-31.012/sp-pages-assembly_en-us_80b161431b1b8ce356b58dd5ab1df0cc.js:1178:42819)
这是我的方法,我发现在调用 Microsoft Graph Explorer API("https://graph.microsoft.com
") 时,在 Chrome、IE 和 Firefox API 提供响应,但在 Edge 中它进入 catch 部分并抛出错误。
private _getListApplications(param): Promise<any> {
return this.context.aadHttpClientFactory.getClient('https://graph.microsoft.com')
.then((client: AadHttpClient) => {
return client.get("https://graph.microsoft.com/beta/applications",AadHttpClient.configurations.v1);
}).then((responseListAllApps: SPHttpClientResponse) => {
return responseListAllApps.json();
}).catch(err => { console.log('errr', err); });
}
感谢任何帮助。
我在 sharepoint.stackexchange 上问过同样的问题,我得到了适合我的答案。
看起来 back-end 中有一些变化,因此代码在 Edge 和 IE 中有点停止工作。
作为解决方法,目前建议您明确设置 header 值。
您需要为 header 添加以下代码,不要忘记从 @microsoft/sp-http
模块导入 ISPHttpClientOptions
:
let httpOptions: ISPHttpClientOptions = {
headers: {
"accept": "application/json",
"content-type": "application/json"
}
};
之后你的完整代码如下:
private _getListApplications(param): Promise<any> {
let httpOptions: ISPHttpClientOptions = {
headers: {
"accept": "application/json",
"content-type": "application/json"
}
};
return this.context.aadHttpClientFactory.getClient('https://graph.microsoft.com')
.then((client: AadHttpClient) => {
return client.get("https://graph.microsoft.com/beta/applications",AadHttpClient.configurations.v1, httpOptions);
}).then((responseListAllApps: SPHttpClientResponse) => {
return responseListAllApps.json();
}).catch(err => { console.log('errr', err); });
}