Teams App 实质是托管在Azure等服务端上的web app,Teams客户端类似于浏览器,打包部署直接用插件完成 此外微软提供sdk使之支持sso及授权访问功能
Microsoft 365 Developer Program
部署及发布Teams App需要Talent的管理员权限 加入Microsoft 365 Developer Program 创建开发者账号使用免费沙盒—> Microsoft 365计划
安装vs code extraction:Teams Toolkit (preview)
创建项目
- create a new Teams app
- select capability: Tab
- select hosting type: Azure
- select language: JavaScript
- input app name
以上设置保存在.fx/settings.json
├───.fx
│ settings.json
│ package.json
│ permissions.json
├───appPackage
│ color.png
│ manifest.source.json
│ outline.png
│
└───tabs
│ .env
│ .gitignore
│ package.json
│ README.md
│
├───public
│ auth-end.html
│ auth-start.html
│ deploy.png
│ favicon.ico
│ hello.png
│ index.html
│ publish.png
│
└───src
Tab其实就是个React App│ index.css │ index.jsx │ └───components │ App.css │ App.jsx │ Privacy.jsx │ Tab.jsx │ TabConfig.jsx │ TermsOfUse.jsx
运行和调试
press F5
调试host为 https://localhost:3000
偶见 localhost refused to connect. 查看Teams Toolkit的Accounts中side loading是否处于disabled状态Your Microsoft 365 tenant admin hasn’t enabled sideloading permission for your account. You can’t install your app to Teams!
出于种种原因造成的side loading disabled 应进入Microsoft365 Admin Center设置
Show all —> Admin centers —> Teams Apps —> Setup policies —> Global
打开 Upload custom apps
部署到Azure
先执行Teams Toolkit提供的DEPLOYMENT—>Provision in the Cloud功能,toolkit将以项目名称自行创建App Service、Storage Account及Vitual Network等Rescource
事实上,Teams Tab App的前端静态文件使用Azure Storage Account托管,访问控制通过托管标识(Managed Identity), 关于Provision时创建哪种资源见Provision cloud resources
使用Deploy to the Cloud 将当前项目作为Web App部署到前面Provision预备的资源上
记得配置Api的Endpoint 比如写/public/config.json
Zip Teams metadata package可获得该Web App的配置信息 包括名称及地址 以用于添加到Organization的Teams中
上传到teams
编译产生 build\appPackage.local.zip 即项目的应用包,该目录下还有应用部件清单 manifest.json
将应用包上传到teams中测试:Teams 左边栏点击Apps —> Manage your apps —> Upload an app to your org’s app catalog
上传后图标显示在Apps列表中 可将其添加到team的chat中
发布到组织
Todo List Sample (SPFx)
1 | npm i -g teamsfx-cli // 安装脚手架 |
使用如下命令创建sample APP并基于这些sample作为模板开发自己的应用1
teamsfx new template todo-list-SPFx
在teams中打开sharepoint站点
配置一个list 见Microsoft Doc:
代码中/SPFx/src/webparts/todoList/components/SharePointListManager.ts line17 设置为sharepoint上list的名字
用vscode的Teams Toolkit打开项目
选择项目目录打开
在teams toolkit中选择Provision in the cloud 在Cloud端创建app
**
点击Deploy to the cloud部署
点击Publish to the cloud发布
访问Microsoft Teams admin center查找已发布的app
登录Teams添加app
TODO 主动从外部系统向 Teams 发送信息,允许用户从 Teams 客户端内部处理该信息。
TODO 允许用户在另一个系统中快速查找信息,并将结果添加到 Teams 中的对话。
身份认证
Microsoft 或 Microsoft 365 帐户登录 Teams 后,应用用户可以使用你的应用,而无需再次登录。
如上图示,App添加到Teams,切换到该tab时 确认授权App访问Azure AD
步骤:
首先 在AzureAD注册app
trouble shooting
Teams Toolkit issue: Your Microsoft 365 tenant admin hasn’t enabled sideloading permission for your account. You can’t install your app to Teams