Teams AppId, InstallationId 和 ExternalId 的區別

大家如果看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

PropertyTypeDescription
idstringThe catalog app’s generated app ID (different from the developer-provided ID in the?Microsoft Teams zip app package.
externalIdstringThe 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 的情況,那肯定理解更加深刻。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277911.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277911.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277911.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

osi參考模型(開放系統互連參考模型)

自互聯網誕生以來,隨著網絡飛速發展,用戶迫切要求能在不同體系結構的網絡空間交換信息,使得不同的網絡能夠互聯起來。 國際化標準組織(International Organization for Standardization,即ISO)從1977年開始…

Java:反射+泛型:獲取類型參數的實例

2019獨角獸企業重金招聘Python工程師標準>>> 場景描述&#xff1a; 我需要開發四個頁面&#xff0c;每個頁面都是只涉及增刪改查的基本邏輯。 最簡單的寫法&#xff1a; 創建四個接口A,B,C,D&#xff0c;每個接口中都聲明了增刪改查四個方法,完全一致 public Map<…

servlet(1)

servlet類分級&#xff1a; 1.ServletConfig接口類&#xff1a;理解為讀取servlet配置的類&#xff0c;里面有四個抽象方法如下&#xff1a; ①getServletName:獲取servlet在web.xml中的名字 ②getServletContext&#xff1a;獲取Servlet上下文&#xff0c;相當于web項目管理所…

如何在 Apple Silicon (M1) 上開發 Teams App

apple 在幾個月前發布了自家的芯片 M1&#xff0c;由于將多核cpu&#xff0c;多核gpu&#xff0c;神經網絡運算&#xff0c;內存和其他一切處理部件高度整合在一起&#xff0c;大大提高數據傳輸速度。發布后好評如潮&#xff0c;我也沒有忍住&#xff0c;入手了一臺最低配的mac…

BZOJ5289 洛谷4437:[HNOI/AHOI2018]排列——題解

https://www.lydsy.com/JudgeOnline/problem.php?id5289 https://www.luogu.org/problemnew/show/P4437 考慮對于a[i]m,a[m]n&#xff0c;我們令p[j]i,p[k]m&#xff08;一定會有一對(j,k)滿足這個條件的&#xff09;&#xff0c;則我們會有p[k]a[p[j]]&#xff0c;此時我們要…

集成學習-Adaboost

Adaboost 中文名叫自適應提升算法&#xff0c;是一種boosting算法。 boosting算法的基本思想 對于一個復雜任務來說&#xff0c;單個專家的決策過于片面&#xff0c;需要集合多個專家的決策得到最終的決策&#xff0c;通俗講就是三個臭皮匠頂個諸葛亮。 對于給定的數據集&#…

主動給團隊或用戶安裝Teams App

在寫這篇文章的時候&#xff0c;這個新功能還處在 Public Review&#xff0c;這意味著可能&#xff08;很小的可能性&#xff09;這里寫的方法在正式發布前還會有一些改動。 之前有一些做teams app開發的朋友問過我&#xff0c;能不能主動給一個team或者一個用戶安裝一個指定的…

thinkphp5多級控制器是什么?怎么使用?

thinkphp5多級控制器是什么&#xff1f;怎么使用&#xff1f; 一、總結 1、多級控制器是讓控制器的級數變成多級&#xff0c;也就是controller目錄下可以新建其它目錄。 2、使用的話注意目錄下的控制的的命名空間&#xff08;加上目錄名&#xff09;&#xff08;namespace app\…

給Teams消息附加圖片的三種方式

Teams消息支持三種不同的方式來添加圖片&#xff0c;這篇文章我們來一起看一下這三種方式。 Inline圖片 var imagePath Path.Combine(Environment.CurrentDirectory, "abc.png"); var imageData Convert.ToBase64String(File.ReadAllBytes(imagePath)); var image…

4月18日 MySQL學習

正式開始了數據庫的學習 昨天下好的MySQL 今天正式開始學習的&#xff0c;介紹了多種數據庫軟件&#xff0c;當然 學習的這個是開源的 免費的。 DBMS(數據庫管理系統)這就是我們學習的數據庫的軟件 數據庫分為關系型數據庫管理系統和非關系型數據庫管理系統(沒有深入的了解) 今…

企業數據湖構建之旅

摘要&#xff1a;隨著互聯網的發展&#xff0c;數據的規模和類型都呈現一個爆炸性的增長&#xff0c;對于這么多類型的數據&#xff0c;如何進行有效的管理和存儲&#xff0c;包括數據的分析&#xff0c;這是大家要面臨的一個問題。在武漢云棲大會上&#xff0c;阿里云高級產品…

用AzureFunction開發最簡單的Teams Bot

之前我有一篇文章講了如何在azure function上開發最簡單的outgoing webhook&#xff0c;收到一些反饋&#xff0c;建議我介紹一下如果在azure function上開發teams bot&#xff0c;那這篇文章就來講一下如何用function來快速開發bot。 我們先創建一個azure function資源&#…

20189215 2018-2019-2 《密碼與安全新技術專題》第7周作業

課程&#xff1a;《密碼與安全新技術專題》 班級&#xff1a; 1892班 姓名&#xff1a; 李煬 學號&#xff1a;20189215 上課教師&#xff1a;謝四江 上課日期&#xff1a;2019年4月9日 必修/選修&#xff1a; 選修 1.本次講座的學習總結 講座主題&#xff1a;信息隱藏 信息隱藏…

BZOJ1565[NOI2009]植物大戰僵尸——最大權閉合子圖+拓撲排序

題目描述 Plants vs. Zombies&#xff08;PVZ&#xff09;是最近十分風靡的一款小游戲。Plants&#xff08;植物&#xff09;和Zombies&#xff08;僵尸&#xff09;是游戲的主角&#xff0c;其中Plants防守&#xff0c;而Zombies進攻。該款游戲包含多種不同的挑戰系列&#xf…

推送ActivityFeed到Teams

幾個月前&#xff0c;Teams 團隊又推出了新的 Graph API&#xff0c;讓 app 可以給用戶發送 Activity Feed。我們來看看如何做。 首先&#xff0c;我們的app需要使用較新的 manifest 1.7版本&#xff0c;當然如果使用最新的1.8版本就更好了。在manifest json中添加 webApplica…

RecycleView彈性滑動

還有點bug&#xff0c;建議使用 LinearSnapHelper rvPilotList.addOnScrollListener(new RecyclerView.OnScrollListener() {Overridepublic void onScrolled(NonNull RecyclerView recyclerView, int dx, int dy) {super.onScrolled(recyclerView, dx, dy);// …

關于深度學習,這些知識點你需要了解一下

深度學習概述 o 受限玻爾茲曼機和深度信念網絡 o Dropout o 處理不平衡的技巧 o SMOTE&#xff1a;合成少數過采樣技術 o 神經網絡中對成本敏感的學習 深度學習概述 在2006年之前&#xff0c;訓練深度監督前饋神經網絡總是失敗的&#xff0c;其主要原因都是導致…

發送不同類型的ActivityFeed

上一篇文章講到了如何使用最新的Graph API來給一個用戶發送一個簡單的 Activity Feed。我們這篇文章來詳細講一下發送三種不同類型的消息。 發送 Chat 相關的 Activity Notification API 為 POST https://graph.microsoft.com/beta/chats/{chat-id}/sendActivityNotification…

git add * 提示warning: LF will be replaced by CRLF in 解決辦法

在使用git的時候&#xff0c;每次執行 $ git add * 都會提示這樣一個警告消息&#xff1a; 雖然說沒有什么影響吧。 不過就是覺得太礙眼了&#xff0c; 按照這樣設置就沒有問題了: git config core.autocrlf false 這樣設置git的配置后在執行add操作就沒有問題了。 奮斗的年紀你…

git 放棄本地修改,強制拉取更新

開發時&#xff0c;對于本地的項目中修改不做保存操作&#xff08;或代碼改崩&#xff09;&#xff0c;可以用到Git pull的強制覆蓋&#xff0c;具體代碼如下&#xff1a; git fetch --all git reset --hard origin/master git pull //可以省略 git fetch 指令是下載遠程倉庫最…