Teams团队的成员列表API的已知问题

如果大家经常使用Graph API来对Teams进行操作管理的话,有时候会遇到一些奇怪的问题,我前两天还在Stack Overflow上回答了一个用户的问题,这个问题我自己也遇到过。所以我想用这篇文章来分享一下,万一以后大家遇到类似的问题,就有所防备。

这个问题实际上是一个已知问题,官方的解释在这里

We recommend that when you add an owner, you also add that user as a member. If a team has an owner who is not also a member, ownership and membership changes might not show up immediately in Microsoft Teams. In addition, different apps and APIs will handle that differently. For example, Microsoft Teams will show teams that the user is either a member or an owner of, while the Microsoft Teams PowerShell cmdlets and the /me/joinedTeams API will only show teams the user is a member of. To avoid confusion, add all owners to the members list as well.

讲的是说,如果我们需要给一个团队(team)增加一个owner,那你不单单需要把这个用户加入到owner列表,还需要把他加入到member成员列表。如果你直加了一个列表,那就可能有问题。不同的程序对于这个用户的判断会不一致。

比如:你把用户A加入到一个团队(team)的owner列表,但是没有把这个用户加入到成员member列表。那么,你使用powershell的cmdlet,和/me/joinedTeams这个API就会认为这个用户A还不在这个团队里。

所以,为了防止这类事情的发生,建议的做法是:如果你要把用户加入到owner列表,那同时你也应该把这个用户加入到成员列表。

另外,还有一个已知问题,我之前也遇到了。官方是这么说的:

Known issue: when DELETE /groups/{id}/owners is called, the user is also removed from the /groups/{id}/members list. To work around this, we recommend that you remove the user from both owners and members, then wait 10 seconds, then add them back to members.

意思是:当你想把一个用户移出owner列表,也就是说这个用户不在是这个团队的拥有者。我们通常会使用这个API

DELETE /groups/{id}/owners/{userId}/$ref

但是诡异的地方是,如果你这么做了之后,这个用户会自动从这个团队的member成员列表里移出,也就是说,他连普通的成员身份都没有了。也就是说相当于自动帮你调用了DELETE /groups/{id}/members/{userId}/$ref接口。

目前官方建议的workaround是当你调用DELETE /groups/{id}/owners/{userId}/$ref把这个用户移出owner拥有者列表后,等10秒钟(注意,官方建议要等10秒钟,不能立刻),然后再调用下面这个接口来吧用户加回到member成员列表。

POST /groups/{id}/members/$ref

希望这两个已知问题能尽快得到产品团队的解决,也希望这篇文章能在大家遇到类似的问题时,对大家有帮助。

另外,强烈推荐微软牛人Ares陈老师的Teams开发系列视频讲座:Microsoft Teams开发入门和实践 https://aka.ms/teamsdev163study ,从入门到精通Teams开发!本篇博客里提到的GraphAPI在章节4中有详细解说。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OSChina 周三乱弹 —— 爸爸说,这个是从他硬盘里掉出来的

2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 焕焕 :分享郑秀文的单曲《唉声叹气》 《唉声叹气》 手机党少年们想听歌,请使劲儿戳(这里&am…

改进的二分查找

1 import java.util.Comparator;2 3 public class MyUtil {4 5 public static <T extends Comparable<T>> int binarySearch(T[] x, T key) {6 return binarySearch(x, 0, x.length- 1, key);7 }8 9 // 使用循环实现的二分查找 10 public static…

LuckyDraw app被评为Microsoft365 App Award

今天查了一下LuckyDraw app&#xff0c;突然发现我上半年开发的Teams app: LuckyDraw&#xff0c;竟然多了一个勋章图标&#xff0c;点进去一看是微软给我的app评了一个”Microsoft 365 App Award”。Super surprise!!&#x1f60d;&#x1f60d;&#x1f60d; 看来我必须要抓…

Python学习笔记__10.4章 进程VS线程

# 这是学习廖雪峰老师python教程的学习笔记1、概览我们介绍了多进程和多线程&#xff0c;这是实现多任务最常用的两种方式。现在&#xff0c;我们来讨论一下这两种方式的优缺点要实现多任务&#xff0c;通常我们会设计Master-Worker模式&#xff0c;Master负责分配任务&#xf…

Filebeat占用内存和CPU过高问题排查

经反馈&#xff0c;新部署的服务器上filebeat占用的cpu过高&#xff0c;且内存只增不减。 而据我了解filebeat非常轻量级&#xff0c;正常情况下占用的资源几乎都能忽略不计&#xff0c;所以怀疑是filebeat本身出了问题。 第一时间查看filebeat日志&#xff08;默认路径/var/lo…

Teams架构剖析(2019年版本)

在上个月刚刚结束的Ignite大会上&#xff0c;Teams产品的架构师Bill Bliss给大家奉上了最新的Teams的架构设计&#xff0c;之前2017年和2018年微软的技术大会上都Teams架构的分享&#xff0c;但是今年大神把Teams架构讲得很深入&#xff0c;覆盖面很广。我这里就挑一些&#xf…

pycharm工具下代码下面显示波浪线的去处方法

近期安装了python后&#xff0c;发现使用pycharm工具打开代码后发现代码下边会有波浪线的显示&#xff1b;但是该代码语句确实没有错误&#xff0c;通过查询发现了两种方法去掉该波纹的显示&#xff0c;下面就具体说明一下&#xff1a; 方法一&#xff1a; 打开pycharm在右下方…

js面向对象与PHP面向对象总结

js面向对象&#xff1a; 1.什么是对象&#xff1f; 对象&#xff1a;任何实体都是对象&#xff0c;拥有属性和方法两大特征 属性&#xff1a;描述事物的特点&#xff1b; 方法&#xff1a;实物拥有的行为&#xff1b; 2.在JS里 Person.name"zhang" Person.fnfunction…

面向全球用户的Teams app之Culture数字篇

我前几周在微软Ignite the Tour北京大会上&#xff0c;分享了如何开发一款面向全世界用户的Teams App&#xff0c;里面介绍了在开发Global Ready的app时会遇到的各种挑战&#xff0c;反响很好。所以我准备写几篇文章&#xff0c;将这些内容分享给没有时间参加大会的同学。 这篇…

Dubbo原理与框架设计

Dubbo是常用的开源服务治理型RPC框架&#xff0c;在之前osgi框架下不同bundle之间的方法调用时用到过。其工作原理和框架设计值得开源技术爱好者学习和研究。 一、Dubbo的工作原理 调用关系说明 服务容器负责启动&#xff0c;加载&#xff0c;运行服务提供者。服务提供者在启动…

面向全球用户的Teams app之Culture计量单位和禁忌篇

我在前一篇文章里分享了Global Ready的app时会遇到的不同文化对于数字方面的挑战。这篇我继续分享不同文化对于计量单位和禁忌方面的挑战。 我们先来看一个例子&#xff0c;假如有一个teams bot&#xff0c;它告诉你一些动物的速度&#xff0c;比如它告诉你&#xff1a; 猎豹能…

【我的Android进阶之旅】Android自定义Lint实践

背景 2017年8月份的时候&#xff0c;我在公司开始推广Lint、FindBugs等静态代码检测工具。然后发现系统自带的Lint检测的Issue不满足我们团队内部的特定需求&#xff0c;因此去自定义了部分Lint规则。这个检测运行了大半年&#xff0c;运行良好&#xff0c;团队的代码规范也有了…

存储结构与索引

一、SQL数据存储的基本介绍 数据库中的数据存储涉及页&#xff08;Page&#xff09;和区&#xff08;Extent)这两个概念了。SQL server中数据存储的基本单位是页。为数据库中的数据文件&#xff08;.mdf或.ndf&#xff09;分配的磁盘空间可以从逻辑上划分成页&#xff08;从0到…

面向全球用户的Teams app之时区篇

我在前两篇文章里分享了Global Ready的app时会遇到的不同文化的挑战。这篇我继续分享在时区方面的挑战。 时间是最复杂的&#xff0c;最容易出错的部分。时间复杂的最根本原因是时区问题。 首先&#xff0c;大家都知道&#xff0c;我们地球是圆的&#xff0c;这个意味着如果大…

Linux: Nginx proxy_pass域名解析引发的故障

背景 业务架构&#xff1a; 部署细节&#xff1a;  两容器均部署在同一机器上&#xff0c;通过 docker-compose 编排&#xff0c;并且通过link方式链接。 故障描述 在有次更新代码时&#xff0c;发现前端能够打开&#xff0c;但是所有接口请求全是502(Bad GateWay) 故障排查 …

Oracle建立全文索引详解

Oracle建立全文索引详解1.全文检索和普通检索的区别 不使用Oracle text功能&#xff0c;当然也有很多方法可以在Oracle数据库中搜索文本&#xff0c;比如INSTR函数和LIKE操作&#xff1a; SELECT *FROM mytext WHERE INSTR (thetext, Oracle) > 0; SELECT * FROM mytext WHE…

面向全球用户的Teams app之夏令时篇

我在前两篇文章里分享了Global Ready的teams app时会遇到的不同挑战。这篇我继续分享在夏令时方面的挑战。 夏令时&#xff0c;主要是为了节约能源&#xff0c;英文里通常缩写成DST(Daylight Saving Time)。一般在天亮早的夏季人为将时间调快一小时&#xff0c;可以使人早起早…

爬取全部的校园新闻

1.从新闻url获取新闻详情&#xff1a; 字典,anews 2.从列表页的url获取新闻url&#xff1a;列表append(字典) alist 3.生成所页列表页的url并获取全部新闻 &#xff1a;列表extend(列表) allnews *每个同学爬学号尾数开始的10个列表页 4.设置合理的爬取间隔 import time import…

面向全球用户的Teams app之合规性篇

我在前两篇文章里分享了Global Ready的app时会遇到的不同挑战。这篇我继续分享在合规性方面的挑战。 说到合规性compliance&#xff0c;不得不说GDPR标准&#xff0c;当我们发布了一个teams app后&#xff0c;微软会要求开发人员做一个security self assessment&#xff0c;这…

C进阶 - 内存四驱模型

一.内存四驱模型 不知我们是否有读过 《深入理解 java 虚拟机》这本书&#xff0c;强烈推荐读一下。在 java 中我们将运行时数据&#xff0c;分为五个区域分别是&#xff1a;程序计数器&#xff0c;java 虚拟机栈&#xff0c;本地方法栈&#xff0c;java 堆&#xff0c;方法区。…