【发布时间】:2021-08-23 19:55:15
【问题描述】:
我正在开发一个 MS Teams 应用程序,该应用程序通过 Graph-API 将新文件上传到连接的 Teams OneDrive,但我无法为我的应用程序进行身份验证。
我在该主题上找到的文档根本没有提到 react,因此我无法使身份验证正常工作(因为我对 javascript 非常陌生并且需要一个清晰的示例)。如果我可以简单地在某处找到一个有效的授权令牌,那么我只需对其进行硬编码,它就可以解决问题。
否则,我如何通过 Graph-API 获得用户/应用身份验证以将我的文件上传到 OneDrive?
这是我的代码:
import React from 'react';
import './App.css';
import * as microsoftTeams from "@microsoft/teams-js";
class Tab extends React.Component {
constructor(props){
super(props)
this.state = {
context: {}
}
}
componentDidMount() {
var myHeaders = new Headers();
myHeaders.append("Content", "text/plain");
myHeaders.append("Content-Type", "text/plain");
myHeaders.append("Authorization", "Bearer {token}");
var raw = "This works";
var requestOptions = {
method: 'PUT',
headers: myHeaders,
body: raw,
redirect: 'follow'
}
fetch("https://graph.microsoft.com/v1.0/sites/OpenSesameTest/Shared%20Documents/General/FileB.txt:/", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
}
render() {
return (
<form>
<div>
<label>Select file to upload</label>
<input type="file"></input>
</div>
<button type="submit">Upload</button>
</form>
);
}
}
export default Tab;
我的 fetch 似乎工作正常,除了它给我的身份验证错误。
【问题讨论】:
-
正如@Ben Stobbs 回答的那样,您可以通过执行 POST 调用并获取访问令牌来获取令牌,另一种方式:您可以参考此示例进行身份验证流程:graph-activity-feed -> auth-start.ejs 和 auth-end。 ejs。支持文档:SSO support for tabs
-
@HunaidHanfee-MSFT 问题在于编写实际代码,所有示例都使用常规 javascript 但我需要反应风格,我不确定如何以正确的方式获得它。
-
我不懂react style?你也可以在 react 中使用常规的 JavaScript 代码。
-
@HunaidHanfee-MSFT 我试过但没用。我只需要一个获取令牌的函数的示例。可以给我看看吗?
标签: javascript reactjs authentication microsoft-graph-api microsoft-teams