大家如果看teams的 graph api 开发文档,可能会把 app id, installation id 和 external id 搞混,我自己一开始的时候就有点被搞晕了,再加上app manifest里面的 id 和 bot id,基本就彻底晕掉了。

那我们今天这篇文章就来讲讲这几种 id 。

首先当我们开发一个 team app 的时候,都需要编写一个 manifest json 文件,在这个文件里就有必须要指定一个 id,还有一个 bot id,bot id就是你创建的 microsoft app id,我们通常把这两个id 使用一样的值,但是实际上一个 teams app里面可以有多个 bot,也就是说你可以在manifest json文件里指定多个 bot id。

当我们把我们的 teams app提交到teams里后(提交一个zip文件,zip里含有manifest json文件),teams系统就会自动生成一个 app id,这个就是teams文档里提到的 app id,要注意的是这个app id和我们在manifest 文件里写的id 不是一个东西。同时 teams 把 manifest 里的 id 也保存下来,叫做了 external id。

我们看一下微软文档里的写法: https://docs.microsoft.com/en-us/graph/api/resources/teamsapp?view=graph-rest-1.0&preserve-view=true#properties

TeamsApp Resource Type Properties

Property Type Description
id string The catalog app’s generated app ID (different from the developer-provided ID in the Microsoft Teams zip app package.
externalId string The ID of the catalog provided by the app developer in the Microsoft Teams zip app package.

搞清楚了 app id 和 external id 的区别后,我们再来看一下 installation id 就简单了。

一个 app 可以被安装到不同的 tenant 下的不同的 team 里,每一次安装,就会对应的生成一个 installtion id。也就是说一个 app id 会对应到多个 installation id,他们是一对多的关系。

我们来看一个实际的例子。

GET https://graph.microsoft.com/v1.0/teams/{team-id}/installedApps?$expand=teamsAppResponse:
HTTP/1.1 200 OK
Content-type: application/json
{"@odata.count": 1,"value": [{"id": "NjkwM2Z....",   // installation id"teamsApp": {"id": "11111111-25e0-4569-8ebe-13601cb55a18",    // app id"externalId": "22222222-f94e-4d80-ba90-5594b641a8ee",  // external id (在manifest里指定的 id)"displayName": "YPA","distributionMethod": "sideloaded"}}]
}

通过上面的例子,大家应该都清楚他们的关系了,当然,如果你能自己动手调用一下graph api,看一下在你自己的tenant里各个 id 的情况,那肯定理解更加深刻。

Teams AppId, InstallationId 和 ExternalId 的区别相关推荐

  1. appid,appkey,appsecret区别

    app_id, app_key, app_secret , 对于平台来说, 需要给你的 你的开发者账号分配对应的权限: app_id 是用来标记你的开发者账号的, 是你的用户id, 这个id 在数据库 ...

  2. 小程序开发与网页开发的区别

    一.开发语言 小程序的主要开发语言是 JavaScript 小程序的开发同普通的网页开发相比有很大的相似性 二.逻辑层和渲染层 ​网页开发渲染线程和脚本线程是互斥的(长时间的脚本运行可能会导致页面失去 ...

  3. 微信注册崩溃?appid签名无法注册or如何查看签名是否一致?如何注册appid?jks和keystore的区别?

    跑通微信,这一篇就够了. 一.出现微信注册register(APP_ID)崩溃?或appid无法注册到微信? 解决办法: 1.首先用清理软件彻底清理一下微信缓存吧,可能是因为之前的签名文件已经注册到微 ...

  4. 主动给团队或用户安装Teams App

    在写这篇文章的时候,这个新功能还处在 Public Review,这意味着可能(很小的可能性)这里写的方法在正式发布前还会有一些改动. 之前有一些做teams app开发的朋友问过我,能不能主动给一个 ...

  5. MS SQL Server和MySQL区别

    - 最近在做MS SQL Server转换成MySQL的工作,总结了点经验,跟大家分享一下.同时这些也会在不断更新.也希望大家补充. 1 MySQL支持enum,和set类型,SQL Server不支 ...

  6. 苹果所有常用证书,appID,Provisioning Profiles配置说明及制作图文教程(精)

    概述: 苹果的证书繁锁复杂,制作管理相当麻烦,今天决定重置一个游戏项目中的所有证书,做了这么多次还是感觉很纠结,索性直接记录下来,日后你我他查阅都方便: 首先得描述一下各个证书的定位,作用,这样在制作 ...

  7. mysql与ms sql server_MS SQL Server和MySQL区别

    1 MySQL支持enum,和set类型,SQL Server不支持 2 MySQL不支持nchar,nvarchar,ntext类型 3 MySQL的递增语句是AUTO_INCREMENT,而MS ...

  8. Select和SelectMany之间的区别

    我一直在搜索Select和SelectMany之间的区别,但我一直找不到合适的答案. 我需要学习使用LINQ To SQL的区别,但我发现的只是标准数组示例. 有人可以提供LINQ To SQL示例吗 ...

  9. ms-sql是mysql吗_mssql和mysql有哪些区别?

    <mssql和MysqL有哪些区别?>要点: 本文介绍了mssql和MysqL有哪些区别?,希望对您有用.如果有疑问,可以联系我们. 打开以前的笔记,这是一篇老文章了,不过做mssql转换 ...

最新文章

  1. 洛谷p1162填涂颜色(dfs写法)
  2. 我在51CTO微职位学软考——网络工程师
  3. timertask run函数未执行_函数的防抖和节流是个啥???
  4. [深度学习] 自然语言处理--- 基于Keras Bert使用(上)
  5. AIX下RAC巡检文档 (上)
  6. Swimming Balls
  7. 史上最强GAN:训练费10万起,现在免费体验,画风鬼畜又逼真
  8. 蓝桥杯 BASIC-7 基础练习 特殊的数字
  9. Android,iOS打开手机QQ与指定用户聊天界面
  10. 幂次方计算_4.初中数学:怎么求n的m次方的值?幂的运算,单项式相乘,基础常见考试题...
  11. xposed框架_免root用Xposed框架!安卓用户一定要学会
  12. 史上最详细的MySQL数据库安装教程(图文详解)
  13. Hexo 搭建个人博客学习笔记(4):个性化主题Next个性化配置
  14. Qt 多文本框设置行距和
  15. 最小二乘拟合二次曲线在STM32中的实现笔记
  16. displayblock详解
  17. cmseasy(易通CMS) 注入漏洞 上传漏洞 爆路径ODAY(含修复)
  18. 多层神经元感知器模型_使用多层感知器模型对星系进行分类
  19. 手机酷狗2 java_酷狗叮咚(原手机酷狗) 2.70 For Java 中文官方安装版下载
  20. Python量化分析(1)——Tushare的使用介绍

热门文章

  1. MySQL的一些概念笔记
  2. 中南民族大学计算机类有什么具体专业,中南民族大学计算机科学学院计算机科学与技术专业简介...
  3. mysql一些常用操作_mysql的一些常用操作(一)
  4. ORACLE将查询字段指定为某种类型
  5. eazy ui 复选框单选_UI备忘单:单选按钮,复选框和其他选择器
  6. ThreadLocal就是这么简单
  7. JS引用类型 -- Array类型
  8. JS---------正则表达式
  9. avalon2学习教程15指令总结
  10. django中怎样生成非HTML格式的内容。