获取所有行的最佳方法是什么,这些行将在主键级联上删除?
目前我们知道使用主键作为外键的表列表,现在可以使用简单的选择查询
在大型项目中,将来当添加新表并由任何开发人员使用主键创建外键时。他们可能会错过级联删除之前必须完成的业务逻辑。因此,如果自动发现受影响的行,则可以进行相应处理。
我正在寻找 sql 中的一些功能,它表示在我们启动删除查询之前这些行将受到影响。sql引擎以某种方式维护关系的映射以级联删除。
我们能否以某种方式利用级联删除关系来获取选择查询中关系中的所有行。
编辑:
要求是向用户显示在任何时间点哪些行将被删除。
我正在寻找 sql 中的解决方案,以便即使将来进行架构更改,也不需要使用另一种后端语言来实现此用例。
我们使用 Microsoft Graph 用户 API 来跟踪 Azure AD 中用户的变化。
https://docs.microsoft.com/en-us/graph/api/user-delta?view=graph-rest-1.0&tabs=http
在 API 响应中,我们获取@data.nextlink,以获取下一组用户。这个@data.nextlink 对于特定用户来说异常长,超过 8000 个字符。我们注意到大多数用户包含@data.nextlink,少于4000个字符。
由于长度原因,我们的 Http 客户端和代理服务器拒绝该 url。这是一个问题吗?@data.nextlink 的标准长度是多少。
https://graph.microsoft.com/v1.0/users/delta?$skiptoken=CWVE8SyYFHfrk4xYFHxyyjsB-BsphNwOPo-vbCJuhNEouCI2oNdgkaSeHwkaUJJ9bZh9Dna67EXCHYh8uOyekYp42dnF4J_h-TYxbruxrMKJeyOxsVYwu63dHFBeYj4IE6XtlOtuADejKHSnPq0vHhvaHWUMnFwvTB3aiMrNQRHV7YhDnqcBAmY4MR32GkZFk9xElNVCvDmql98bwa2QpBU2Vk4RDI07SfKiHCro9jA7zz6HdsMXnBMI_NdKv6boaVdyz29nHTqg7J7G8alLQYlT_88iwppE0JBKpG8SAW_PsTOtrlBeetLYORphdkzm0FZ9lh0v4GrWxb2VGSnuDi-ntJ2qT3TIh8MeJs3xxVxRppK86_RhOoZHcQYK9Py1_0d64_XTdmvBgAPgRy9woIgIpRwYsMLZzsJByNd-OxDXZ-ncfzmezn-bP0vPSGXvo_KTGbpKrboXu3eR_8wvo9gvVDc_scq082DNOAZ_iUCIKwfMeFgminoYlvPK_fRoVdiVEV142TPT9UQCAGsoKRCzsbfTuCB10BbrUdiPKD1uHmKc71M5tmDrF1Bg5nOqvAVzHXUCx6fycvdXzrp_IzO6d99Hxzv1jYfUEmitQfoGjoddtguEQmCdbZiuaSCPRgzt7ykP2na4WuKPK8-Mt_idYh4uWVGsg6TBzfBXK298PCGmk7J1i3w9IfVN2zygoQTMpuxVQb09CT7DzN3iV5cV55ew8XCoZZwLC_Ry17JTcj4c6qfKiAZeTsamp8b9ju41zNqImgodc42fRE6U7nZSSRkWSh8iJImV4uTbMqOZOqf6AlkeMy3KqjaZuGkNIlwAXv4nkfF1vtZkxf-UWp5R-D-c0OBC5vFfYK-MUQkkMlDkTawFCdSpslGfYgCaVKayKKH9RlupHHaJ5G5ts0t1T91J247-V7PGWYwJcAvjUapl3VlOZTOfl2aEvSZYkLPMjX5xbchUwvhkJDqZjZIjH8mUp4znGEK14LqQ-N1MiTDcFWhlmttuKJ0kNNLOno_17GlPpu2mCu0DTkT5ymYmPZzFVIE1BJgP2M2sJFiw1fhMpqObciMpCy5PcMtbUqX54dVcgmnM7z8ZLYX6lMP8aV3xqnVouPiDSihF0RKG7AqjQrWB-wX36w8dREoE7dlinGoXjxg9_ZlG13qR9A0xVyCA7sXJUT03HcnS2KDM1cFlZRW7M5OqIygI_MzrVhjo0K-LgmfCFN2ogNc6LTNZLbPZAaImRnPy3bsYGO_WyYbiG4qkQqo1QKtOwcORnpGOL-ZdPqYzCqsvC_MqtEdxTqFt09jf7tWQPFiEJHMsFOwR2ZiNx8HOyo6TQcj_CmgG2kNownON2sq1sdlqWtm2tzYfDLrG3Vec6oLyB2mAWarqCFsqwvzn6AvWK2y4OpygnMy_eIk2KRrFxRWcnnbrJOeKew7QmNMKzQDfmeLkyA6cln_KTr8mCB6gsL082niZ_ZfY_3yG9sp6RPnN5TF5RxzPFsD1EyvuN6Y9UOme-vinGUJHt-Pc_Hv-rLhAcg-qY0GuA9nOzQDE3vwaJ8deWXxuXkRK1OquJ7h3jkHQU6DnzuBCcJmZWD9yqq-Q_9bKm5nGn_586udpzqjVjRrwOvC5wJOIxvDn3gswfMM99c_9BBVZVEMeB7brrdfNIhl8mLBycZFgfHko72qCMx_d80CD5yqVC8kkMK9uzFbaJuk9-b8PiwlY4zkHlauvjCN7uikrqB8Bf2nlSTPInphyw9iU8aTiN4qhkRRrD0ZTrjWqX8c_OtSlvoJkcZjnDEAQrKVlFmcChzXCA5nRCokyniQ-hPfZjUB9I8K9MyFnrIYYowXCykySUBu-ZFXBFdymHAty7MN-VYkFkzyKh-JvuS3gCJuuyoibmvoVh7f3jvL8kjBcwVWxQne7feriS4SRPqoUzp0iwP5kgW6kbVFf-w0vzwmZTVA8R1Me5BAvgyPM4Cm13TgYYo1TFWBDs062vQfUl7p_iREwMlz_0b84L_UXlmq_A2-cQxsNwFdMHx7gRWk0BWeM96slD6JCOcFXZbxU7WykNW_3UzSe6tUugCMznsIkDvfFeiDGU-WnhnDY9j1zQCdSj6Fft3p2sS51lSHjSRE5SD115dVq7wGcj_GMAOJ5RTRQGpLSnX9_5yJOD7e0QpIEs33XxemBWaucdJIL8kEpVDKhvaNhjut-83uUQ9cdslYIOBKFvRJVZeEZkauEmsb0nnd1QXu_otebvDizo8XQ3hdGNTyGhMgc9pWz3j53VqQN4UVIheViRCH-t6ZxETizymGdMIrMl4jUB2AU0lyqKXtOVYOUKWa0xIA-g64Rxn7TTQA8MMBt-BdGbkffSjCOQAe7EVxtZZSBjwdRFQDNNlZrdIzQapeA6upUHijozNa2e_Z-_8r-NpNzWtg3pYTsC2K4OyV2ldRntLqyTZQUkjdIYr_UwnycerTDWCkDjB2KhIcbxCH6bCtlOBHXCAZdUXoJWrzxjRmYo7vlVUGkicpj_w9JbYq0UfjCuVWStuvmyDcbQ3KlMCxozzpjC1YixQGa7__ZD7lVEUYSIlajGa6SFWvRup_CbhnJ8L3h7kPWU7nG2D6KvNhcablOLC1f_djpBTZD00Z9mRwtsBF3BsmjlbxQS-Deuzph2sMAhMKlGuQCKWs8zGZv-TOMvHnIB2ZAlJEBHq9iOW35xSShBqVx002yMUGwNnmF9__ZtWrG98fFum6myfZP5oBXYPfP5UrtaQvERgCzR6VrDVhEFc0Ix69mWZLp7p41uHCmZx_l4ed_OlPPGkNaldPD29JQj_DgsY6LLUZsCN0EEniVy8wXzLXOte4q3Dqv5WX5JbRGzCmgw6zptCABZTE9m40qPO-Mzg47VjuJK2pepF4_i4zrC_JbHmmxfVgwAVNHD9jw6IPzj81rO5kVlAxNihaTfmof0au6aeMNq5vDQG4_B9rh6bo-6FB95yib5_EmXLnNKwlaJlT0KRhtGhCx0x4bwk0b_8SzPOZ6Kkf3LoCQbSvnO5FKy_ulPIwqF10nZuo6LPVNLxn4B7fpr4kAP2uECVw5mmoAHZw_iIXFiD7AIz99WFXLk8XJ0U1qgqi4287uZXeecaSKXzhjdBbHwr-eF6P48aQibDD91796B_v_1F0pDBxez5buy0WPDtwzHcSVUcUsMc7qRpa-kqGwgkWOzylBXvWbUbBF73Rs9kLrEgkn3VnK7e1ltaHBWuvC8Pnyvdu6HisnrlJTpSRDcNlh6KhV1n-IozOt3MnE3uLwnSK3sWr7HFvPyo-TVicIdZYQAAQ_1bRaYvzskUuv6AheZenqFdPvrqmANntsO_HQnfEY_TqAowecFyggeEDfCxqkz92DL7vMteCZlalzWY-GyXqpdyC6eLneoNz3DlbCDa7eHlvJb1n7-HMbTGr4ItNjrxvoJfzZHqVbv3kbHkZbIULhT-pyvl7bfy1DXP14zEf6Uwa8fDFvWODFCf3OpWim1srKmwTNIIGb9zhAjJha8JaoXznHsrjicCX5AaO0_-NFEepmIGzNvTrTP7VH14E-8gmJezVDlZjgmvrPvhR79E6vAlSGywtYHuskNyJDNhMrDJPOa2g0v3NZYO4PWirK_G5E6xp-oYMMcMaSE7ldjtp9B03Mg5ptkfbZHkbQwUFPNgH79WirPt-U7woJgkS6IMei4VjZbuoFlxvn5V-qYpZ9ZMWEOSpSHhYmIag5fkiMYnuS5WVUqAweHpCP9lHOncYvJzqyiKCZGJcOt94u_E8T3RqCvS-WTLLlm3aIIXw9s4Tt18ivktkxVV3AV03iA4rmRldQK4kk8DrIKPNxIwX4mYNRijoGZRzxpofGA8DRC5XVGFuQxBf4PV1U1DYiAO8BVAiFpTIJRL1WxX70Ei1Q79nA1ZrcNN8TTRbWV2pchhYq29-glbH4AFL_fHq4UrhdzIQDg-SXK8br0sGtphcSWh9wo0vpx9IBHYOPzc6y1kpkqhp1i-V4g0XtHKrXEeoXJLbMjGwRafIpR76SH20LdXTF5kg7W0Ftm4gIJgu9wcLyFr0I43rRZGgQ6htLlj5fVl5C3-OccpDvTzY5_gXDRrJhEqnTol_-thKcDtZ8VIkxaP7p6snBMLXyAfNnFITVR69CjY_wGikFxmUmhC4iTySh5Ie_AbZ9NixpeiVESdw-B_37mVxOQYdZZgR2I0tcWPuZp2tYvCu5W0KcBENPW5FkrrPznU_HoWHu87lVKirpXuS3kQGPHp_74682jsf4kJoTDhwOhacuSCsYsdmz3yFrN-Hjj1QFln99sVQUsJAkGVCb_1-Q0UkDsxuGbaQXJb_wqGErNU6Gtxw1A2CJ5eClzrVmv5fTIWPSenkKXuFI86UcNZQkDa3S1mwGMyHIxZHzbu_CrMbXjhku9WSn3PtCOlu9E_tklN0RlgzS7AqnqP0kTQbjUIbXYorY0uFtZLUXViANEtHFyjO70slUDvUUAbs2ZTmfVtVOPlwCrRhMWU7rxwTHwKGaZUvmItYASrVN_qioe5Nu1p2Hjh55mNGnGgDPfoz1euHczXuvKnqTRtJGVILrWT3IkiKpO0szkxs8qZZEJARPbnx-lNoiIDZg4kv7N34l61siaQfgn6AIeta5I7kCY5jqqz_3TQvikr8bmSF8WyoylD5dEG9jrq35fJpzHEEdw7uMK9kxtrZpbCe4itfKBWpM9W3bMBDGaTFWEDqMWoPZWDnIPWB7dgSziMSV5sh88ehVJqeCvpgmrH7u_rw6Dlh9E_bMno5q3a3Sn4fE8NEDiVQQdbqb6oJEQZ--ndzLrx2dR_nq16Tx7IRZ26yctVpRd_pILk27e7RhpPARbENnQ64zSOSfP3CF537wvxcQkdf7SXotEmXybw8o2w3kVWFizapshPUht8Zaa19_fAV_Cg6YVN19iXO3w8ufodWfaTPZ-7tG0XtBAU6cZTgABTEOWaCAmIqrQSGzXQi7tZSxLks64gG2gfpUMxMMnEX2_-YElW0oekqYxGby1-KksCOFbqtAPhSIo_1Kg4lzap8lWNqczU8kruLLkPep6gPP0aR5OWO4dY1ZaacEtJx9HPDIfPg-UFCHKlyPbcXt7hH82n-6Iy669MRayljdfRsnePP1RVzOepw4nyK5Q7vsYr0Lmu8q4qXuy-Wmy5rGyXOIaXK432Zj_QHdm03used1E1Cl9mgLIXcHOvSvOZnYDga1ruXsCMUFBqv3F8QtzY1jTzvL4nqiLeTvuj_eLZ26qZHdYhDFYbtNOAETfIBgN60lUs1SVsP9EOuIpW-QiqQrVhp76hiW1hHVpBUL73EvU3yRglHaxfeXQuiy0U4qyeWYbcxokig2fjiXFplvityZ74tJuQ1qKV2KpYXtw0mKD62mrG8SNqQSQSl_CSyPg6RRN3ZZaBmi45Z77MoQadD-gX4ld07-M70lJ0mNAQpvGvyZUevQS7cMwHmCpra5VRFo52joVFvDO1mszAukdQJwj6iVHDIJpYrYQVRxsM4Ut-BS4MBbbhKKq2aI4y9BXPP02KzvFNGRO0WwM-ieJYdwpPYK1uqaUgvoWpXJ2gsGHUajCKk4ugIodcYXIxULIlZRAFo5PqhqGxVm415khdauQZrCmQHLiH1WyW3kmXX9Lc4W-D0kYhYaZTxCYQy70DVdRhsxQ81oGjISpsLHDZ-NXhc_xjmfXuFPGP79U1TejfcdAly2Kj-UqkqWiBuU8txgeoblnYYuSlSbBUSRw9pH2PXYq2Pbw8ck-CzpaLZ4dI_HDiFByCc7n_6aq6UYxcd2WlxJQWF1wOfxH67n4cEroSI0S7RuXawhaGBcGbJEGvraoMsxcJGHYjCQx8fCbdXKNsrZUx2l8F3OIQeqoyg9AtXpR3_CDnHbJWlQ9LpWlZ856C8arqrKnE1PrVcr3CivAj_pg2KhyXzRgazYvrMGs6NpLOtvzMfnGZ7eo1I1ZP20645me9qdsstkd-EVhFdUZNZaqKEOcu_7tL-Da0zFkitS-Zj2Iw291QyRRtlscPfL-9V--EqtCDFKALbuwQqvmwLLdTdjs7glWn9tp6mEr1h4h4YVAvyDBGUNyetDgATczmpTgHJfpWm5cG8s2SX9UhN3ZEJ1h9Ns5X5kN4WOlcri85Ek5oKyP-f9mQ7G4J4jYVyzA47klHgIezKuslxKLwNj67x0MuQ4EaZwWDPnYd7g5689CXxr-0bnZPMceO562tTEv1d-tW84zRCuv3mAVVKKJ8Q1J9-E9UVHmivduXtHA6P5uO1-rUiuxdOaR5ujVIPn0Fl_0Dte79ca2uKE5fHU6D5k6lsa7vG3eI9JQljVknF6DTDYdMx71b_ZS4GM4JQivGYLzgEVB7yOGZYKNxuZkNpeyqEI8WbepTerk9kKv0tnrQ_tNg3YhFQQ1ALO8jOWm3G2rSgv0N6RX3BCD7IPSVX5JgYWW6hsdepU06fQ3Bm-XoJ8U2D1kgDXRXzxraj75rSSWn6ec9iQaeiOfpM4PddOR9htMY_zY6TGqUTANSwwBXIdF3Aw1vsViVZjAN0d6mna5ByXJNw1gDAuF2yxA7fjEljOqLHgaWLv4ZlEsNUg1YARVDOs9-GwzQxtXNCUBT8311j0sKPr22DmwAzE4U-WClesOwl0iFco42LkCIdhOhy0ZYzLWZZpE9GhDcRF5iBmU0HobwX18ehkd9COcm6BCPt_0_90dLyWptAtaheaRTbvajE983iEch1WNje84T3XaEeM2jVsD22539jyUhuqgVhe7W1TCV6bzxF-6NsQyYi_C6R0vipJyQmlntel0bzoSvO0pQGLFO3p6riSU1-HsMh7BwXub6QMUuYdylSdNItpgg4vX2Zz14pquxbeamHcHaYcDTT81RYifMd_O8Fqdb81bo1g6emAV5GrRrlhZf8JTjM9rPbwR544I7dqeTcVuo434HGE4Dov_yaMwaaf-DyluikpJBZzRFMcaKIEUFdqBpJnR58vNhDF__f_9dtp9WeG2Swb6ps-triONtMcqlPw8cTh_u4O9BCHW3zzNRhyvNHZgEcDz0r9c9T1Bsgfcvi9eK1Xtad7sfXnACMiYNI2hk_8aB3p2O1yzzlWqJbMixcdjDinJa_3h1RItXC5-grF0dhRPK2N9vrwWb7WeXkzVHH36cHGRFdVsinWUiYp0E01e0SPnyqdHG25n4gBG7jbcTs2ga9qpzF-2zzbIGF3bh84GWvNqyc3MOlra5xAmcRYVZwWELMK4qHCIckM0cVhMEsb8A1fBzUu2BxypeOqky78fA7cwhGVZ4qEUvg72HoMT93TqDzrc4mlVOVmWnacptpfWS7YgxqArLBMHxVAT4n_jJ3rnwiBYsn68FATCHErJxncEjgO-NIJVXLG_cGoSGqN5RD2FrJYvnwJNdOZBeLU9TjOYf9oPviUzN7bpZI1oNlS-16woIqEJe86cHzDG650KkPadxxifd_60I2w0jDlmV77woy6wOpHR2NR1e6rVWI2edWkYeVTlX2hi_9CE5SwlRycVm3CZebCGA0nH-V8-cPywLOfr_9Wr7McXuVmTBAVMRlyP5L0Tea_Js598dUAaz1SbYsZbDlTEzDz8adyw6RBpU-F-FfK9d6LZeVOoWfas8ZbB4fJJIr1MiuyzZYtZsA-QK2HJ0XjkuGIdbYmx-XgeJrgqWoSKhcEbqW7NaavHPbOZgqPujp_D2v6Jdb8U0KPm9yY-fkW2lmYHuUI3qQYu0gCClC5D_ph1GOF0KwADPTyqiwt0QjqdXIitsmEWg28tBYM340BZb_aAPZPB01ddqlUJyYs2xFtK6Lq14dMqRZMEYumZIRKQ97OyTYA3CfzRbXKSiEZc_gN4ZaSqZSG6-Rdx8_7G2DeJVwRnJ6yE6gTF7eTyCcubCFNmiCQHxEqrig6jhK4Hl4BUUFqMeciBkLWLKbzQ1WUR0A5BR8u2_TnNalMI3oIwmy2T6i3h678oFYFKtu0fPLls1yXb_3YezxeBmMZwdMcxYe4HJ2YJBDD7NfIO6YEgCUCspliEJyZmDbdzjB3lAGmJhgAYKLP7R45WLR6SVtm9BProbOxsVAZynG4T5r3VGApQSHyVCMFAKlZ5CtyCxhwfY_IiN6-ouWrcxN9is_SCYw0zv7tVDHtLK895frQ3HmiZoXIkF8kTi4Dsbg58LzM979LA335xFfrmtEz35Qk67XZt_hq4cAOfybpdHdXJmCg2s0_rTIrKt6cvJhOEYdvPxqFQKfFrDR-SENi8PEw5OSqvADVxGS_QRNHIXXnEOgmKV9Kz0lM6I49L-JwMNj-2seUcKQOpp5eJs7NCoXyUclxqItUwoKgTjMrEgs7wtEzGwKbLWKOQ5uRnMbnkbn_jPmGeZJGB8xWPptekL1VatYX37PfYYOFW5trLr8tZHjmNDYjWUUKfiqwLDJJ3QG6GQ_NaiEhtPWNe4XAfDH3w2ByIOm9iLK51l2ItiSz1PYVI6or26DBTkzrj9CveFJ3ZMcz3y1eVT6yNmbTK9mt.DNpsG3CyCU3fAACL7LysDb0Mq1eED3D-LiBTlwl_CT0
Run Code Online (Sandbox Code Playgroud) 我们使用Microsoft Graph API在Outlook中创建日历
以下是HTTP请求
POST https://graph.microsoft.com/v1.0/users/me/calendars
Content-type: application/json
{
"name": "My Calendar"
}
Run Code Online (Sandbox Code Playgroud)
最近两年来一直在工作。突然它抛出一个错误
{
"error": {
"code": "TargetIdShouldNotBeMeOrWhitespace",
"message": "Id is malformed.",
"innerError": {
"request-id": "78bce863-d6fb-4ea9-b0f8-e5097010cef6",
"date": "2019-03-23T11:54:34"
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我们搜索文档时(https://docs.microsoft.com/zh-cn/graph/api/user-post-calendars?view=graph-rest-1.0)。我们发现API网址已更改
何时推出像这样的重要更新而导致流程中断?
是否有任何官方频道/群组通知这些更改。
邮件API的Microsoft Graph API的类似问题-SendMail http 400-文档中的API网址不起作用
我们在 MS Teams 机器人上工作。每个机器人通知都包含aadObjectId在我们识别用户的请求正文中。
示例机器人请求
{"name":"composeExtension/query","type":"invoke","timestamp":"2021-04-28T06:41:18.718Z","localTimestamp":"2021-04-28T12:11:18.718+05:30","id":"f:c3c988ef-b14b-b996-b3ec-cee22dbeb5ca","channelId":"msteams","serviceUrl":"https://smba.trafficmanager.net/in/","from":{"id":"29:1FKDpJ_2YcIMpBd94h8BABBpkrv_RVSSeeJ3qh8U3djsypgk2lnJxbq_Sd4eUVFE2lHXBuUBMQ_se7QEvYzTbtQ","name":"Test Account","aadObjectId":"7812b15f-6462-44ef-a772-d9012c55bf1c"},"conversation":{"conversationType":"personal","tenantId":"4d4f9f3f-2553-430b-b86b-442be9306e29","id":"a:1W4nBEGebG_h5wTFEGuyFYXr0_vCYTvg3-lIZ9uKaPFiDZmtU5FIA2PH880C09mrtxbqEeIJ-sPQvwy0qfDhmTOPuEGRtkoT7NGS1eTBHBfjWXWFMRgOK5yzsNMlL6i0d"},"recipient":{"id":"28:97f33763-604f-89ae-40b3-719c55e66177","name":"Test Bot"},"entities":[{"locale":"en-GB","country":"GB","platform":"Web","timezone":"Asia/Calcutta","type":"clientInfo"}],"channelData":{"tenant":{"id":"4d4f9f3f-2553-430b-b86b-442be9306e29"},"source":{"name":"compose"}},"value":{"commandId":"Contacts","parameters":[{"name":"initialRun","value":"true"}],"queryOptions":{"skip":0,"count":25}},"locale":"en-GB","localTimezone":"Asia/Calcutta"}
Run Code Online (Sandbox Code Playgroud)
在初始身份验证期间,我们存储用户 ID。我们使用 OAuth2.0 和以下 Microsoft Graph API 来获取用户 ID。
https://docs.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0&tabs=http
我们注意到id图形 api 和机器人框架中返回的业务(或工作)帐户是相同的。
但是对于个人账户就不同了
样本 ID 供参考
Work Account
From Graph API - id : 7812b15f-6462-44ef-a772-d9012c55bf1c
From Bot - aadObjectId : 7812b15f-6462-44ef-a772-d9012c55bf1c
Run Code Online (Sandbox Code Playgroud)
Personal Account
From Graph API - id : 47268d7805746036
From Bot - aadObjectId : 6542b15f-7632-a772-44ef-d9012c55bf1c
Run Code Online (Sandbox Code Playgroud)
那么如何获取个人用户的aadObjectId呢?
azure-active-directory microsoft-teams microsoft-graph-teams microsoft-graph-api