【问题标题】:How to show the profile image/photo of a user in Teams tab?如何在 Teams 选项卡中显示用户的个人资料图片/照片?
【发布时间】:2022-03-03 21:15:20
【问题描述】:

问题

在我们的 Teams 应用选项卡中,我们希望显示当前用户的个人资料图片/照片。

我们尝试过的事情

  • 用户通过Single Sign-on for tabs 进行身份验证,我们存储一些用户信息以跟踪我们应用程序的一些进度。无法使用 单点登录 进程中的令牌从 Microsoft Graph API 获取配置文件图像 — 缺少 User.Read 权限。

  • 在 Microsoft Teams Javascript SDK 的 Teams 上下文中,用户个人资料图像似乎不可用。

  • 在 SharePoint 中,可以使用特殊 URL:https://<tenant>.sharepoint.com/_layouts/15/userphoto.aspx?size=L&accountname=<upn> 显示当前用户的个人资料图像。如果用户尚未登录到 SharePoint,这在具有“无访问权限”重定向的 Teams 中会失败。

看似可行的解决方案

  • 获得User.Read权限的额外认证步骤;不理想,没有人会为了显示个人资料图片而按下额外的按钮。

  • 说服标签单点登录流程包含User.Read;在各种配置中添加权限并没有改变生成的令牌中的任何内容。

  • 使用自定义 OAuth2 流程,根据this blog post,可以在 bots 流程中设置单点登录。 Teams SDK 似乎没有同样的可能性。

  • 以某种方式确保用户在 SharePoint 中经过身份验证,以便我们可以使用神奇的个人资料图像 URL;似乎不太可能。

是否有解决方法和/或我们尚未尝试解决此问题的方法?

【问题讨论】:

  • 无关评论,但我喜欢头像!
  • 您需要调用 Graph API 来获取 Profile Image,然后将其显示在选项卡中。 docs.microsoft.com/en-us/graph/api/…
  • 从 Microsoft Graph API 获取配置文件图像需要额外的权限 (User.Read),我想阻止这种情况。这意味着用户必须两次授予权限才能使用该应用程序,一次才能登录,第二次用于个人资料图片。
  • 据我了解,user.read默认是注册Bot时添加的权限。所以你需要调用Graph API获取Profile Image。
  • 情况并非如此,当对机器人或选项卡使用单点登录过程时,User.Read 权限在您获得的令牌中不可用(通过on_behalf_of 流)。

标签: azure-active-directory botframework microsoft-teams


【解决方案1】:

很遗憾,您将无法修改标准 SSO 的功能。

解决此问题的最简单方法是使用 Microsoft Graph Toolkit,特别是 Person component。它正是为这种场景而构建的,并且您从 Teams 上下文中获得了用户的 AadObjectId。

它确实需要 Azure 应用程序,但我认为您可以使用相同的应用程序。默认情况下,它会向用户提示同意弹出窗口,但您可以像往常一样通过代表用户同意的管理员来解决此问题。

【讨论】:

  • 感谢您的建议!不幸的是,这并不能解决我们的问题,它需要的提示是一个交易破坏者——至少,我们想先探索没有它的选项。管理员同意是我们产品未来步骤中存在的东西。在整个组织在征得管理员同意的情况下进行注册之前,我们希望为“普通”用户提供尽可能完整的产品预览。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
相关资源
最近更新 更多