当来宾用户使用其他帐户接受 SharePoint Online 邀请时出错

症状

尝试使用来宾帐户访问共享资源时,会收到以下错误消息之一:

  • Access Denied
  • Let us know why you need access to this site.
  • User is not found in the directory
  • You need permission to access this site.

决议

若要解决此问题,请执行以下步骤:

  1. 确定接受邀请的帐户。
  2. 删除错误的帐户并添加正确的帐户。
  3. 将用户重新邀请到资源。

注意:本文中的许多示例使用 <contoso> 作为占位符。 在你的情境中,将<contoso>替换为你用于组织的域。

确定哪个帐户可以作为来宾用户访问

如果以不正确的外部用户身份访问站点,请执行以下步骤:

  1. 以用于接受邀请的外部用户帐户身份登录。

  2. 单击右上角的配置文件图像,然后单击“我的设置”。

  3. “帐户” 字段中,查看电子邮件地址。 例如,i:0#.f|membership|JonDoe@contoso.com

    注意:在此示例中, JonDoe@contoso.com 是接受用户邀请的电子邮件帐户。

  4. 如果地址不正确,请按照本文的“删除不正确的外部用户帐户”部分中的步骤作。

如果无法以不正确的外部用户身份访问站点,请执行以下步骤:

  1. 作为 SharePoint Online 管理员,登录到与外部用户共享的网站集。

  2. 选择 “设置” 菜单的齿轮图标,然后选择 “网站设置”。

  3. 在“ 用户和权限 ”部分中,选择“ 人员和组”。

  4. 在浏览器窗口中 URL 的末尾,在 people.aspx? 部分之后,将 MembershipGroupId=<number> 替换为 MembershipGroupId=0,然后按下回车键。

  5. 在用户列表中,找到外部用户的名称。 右键单击用户名,并复制快捷方式。

  6. 在新浏览器窗口或选项卡中,将上一步中复制的 URL 粘贴到地址框中。 将 &force=1 添加到 URL 末尾,然后按 Enter。

  7. “帐户” 字段中,查看电子邮件地址。 例如,*i:0#.f|membership|JonDoe\@contoso.com

    注意:在此示例中, JonDoe@contoso.com 是接受用户邀请的电子邮件帐户。

  8. 如果地址不正确,请按照本文的“删除不正确的外部用户帐户”部分中的步骤作。

删除不正确的外部用户帐户

您需要从每个该帐户有权访问的站点集合中删除外部用户帐户。 若要删除用户帐户,可以使用 SharePoint Online 用户界面或 SharePoint Online 命令行管理程序,具体取决于 Microsoft 365 的版本。

对于 Microsoft 365 商业版订阅,请使用 SharePoint Online UI:

  1. 浏览到Microsoft 365 管理中心。https://portal.office.com

  2. 服务设置中,选择“ 管理组织范围的设置”。

  3. 从左侧导航菜单中选择 网站和文档共享 ,然后选择“ 删除单个外部用户”。

  4. 选择要删除的外部用户,然后选择 “删除” 图标。

对于所有其他订阅,请使用 SharePoint Online 管理 Shell 并按照以下步骤操作:

注释

此选项不适用于 Office Small Business(P)组织。

  1. 下载并安装 SharePoint Online 命令行管理程序

  2. 启动 SharePoint Online 命令行管理程序并运行以下命令:

    $cred = Get-Credential
    
  3. Windows PowerShell 凭据所需的 对话框中,输入管理员凭据,然后选择“ 确定”。

  4. 连接到 SharePoint Online,然后运行以下命令:

    Connect-SPOService -Url https://-admin.sharepoint.com -Credential $cred
    
  5. 从每个站点集合中删除用户。 运行下面的命令:

    $ExtUser = Get-SPOExternalUser -filter <account@contoso.com>
    

    注释

    在此命令中,将 account@contoso.com 替换为受影响的帐户。

    若要删除用户,请运行以下命令:

    Remove-SPOExternalUser -UniqueIDs @($ExtUser.UniqueId)
    

使用以下步骤删除外部用户访问 SharePoint Online 的能力。 但是,用户可能仍显示在搜索结果和 SharePoint Online 命令行管理程序 Get-SPOUser cmdlet 中。 若要完全从 SharePoint Online 中删除用户,请使用以下方法之一从 UserInfo 列表中删除用户。

  1. 使用 SharePoint Online UI。 浏览到用户以前有权访问的每个网站集,然后执行以下步骤:

    1. 在网站集合中,编辑 URL 时,将以下字符串添加到 URL 的末尾:

      _layouts/15/people.aspx/membershipGroupId=0
      

      例如,完整的 URL 类似于以下示例:

      https://<contoso>.sharepoint.com/_layouts/15/people.aspx/membershipGroupId=0
      
    2. 从列表中选择用户。

    3. 单击功能区 中的“删除用户权限 ”。

  2. 使用 SharePoint Online 命令行管理程序。

    注释

    此选项不适用于小型企业订阅。

    1. 启动 SharePoint Online 命令行管理程序。

    2. 运行下面的命令:

      $cred = Get-Credential
      

      在 Windows PowerShell 凭据所需窗口中,键入管理员凭据,然后选择“ 确定”。

    3. 连接到 SharePoint Online,然后运行以下命令:

      Connect-SPOService -Url https://<contoso>-admin.sharepoint.com -Credential $cred
      
    4. 从每个网站集中删除用户。

      运行以下命令来标识受影响的来宾用户帐户:

      Get-SPOUser -Site https://<contoso>.sharepoint.com | FT –a
      

    请注意返回的结果中的来宾用户的登录名。 对于来宾用户,如果它是Microsoft帐户,它可能具有“live.com#”前缀。

    运行以下命令以删除外部用户帐户:

    Remove-SPOUser -Site https://<contoso>.sharepoint.com -LoginName live.com#jondoe@company.com
    

    注意:将 live.com#jondoe@company.com 替换为方案中用户的登录名。

接下来,必须从 Microsoft Entra ID 中删除帐户:

  1. 运行以下命令下载并安装 Microsoft Graph PowerShell SDK:

    Install-Module Microsoft.Graph -Scope CurrentUser -Repository PSGallery 
    
  2. 通过运行以下命令打开 PowerShell 并连接到 Microsoft Graph:

    Connect-MgGraph -Scopes "User.ReadWrite.All","Directory.ReadWrite.All"
    
  3. 在对话框中输入管理员凭据。

  4. 通过运行以下命令找到外部用户(来宾)。 此命令按 UPN 筛选来宾帐户,并显示帐户的 ID、UPN 和 UserType。 将 jondoe_contoso.com#EXT#@yourdomain.onmicrosoft.com 替换为您的情况中的特定用户。

    $guestUpn = 'jondoe_contoso.com#EXT#@yourdomain.onmicrosoft.com'
    Get-MgUser -Filter "UserPrincipalName eq '$guestUpn'" -Property Id,UserPrincipalName,UserType | Format-Table -AutoSize
    
  5. 运行以下命令软删除来宾用户:

    Remove-MgUser -UserId <user-id> -Confirm:$false
    
  6. (可选)运行以下命令,从回收站永久删除来宾用户:

    $deleted = Get-MgDirectoryDeletedItem -Filter "Id eq '<user-id>'" -All
    Remove-MgDirectoryDeletedItem -DirectoryObjectId $deleted.Id -Confirm:$false
    

清除浏览器缓存

SharePoint Online 在多种方案中使用浏览器缓存,包括人员选取器功能。 即使在从系统完全删除用户后,用户仍可能仍保留在浏览器缓存中。 清除浏览器缓存可解决此问题。 清除缓存时,请确保还选择 Cookie 和网站数据 选项。

重新邀请外部用户

删除外部用户帐户后,请使用相应的电子邮件地址将外部用户重新邀请到网站。 若要确保用户接受具有相应电子邮件地址的邀请,最佳做法是在邀请中复制链接,然后将其粘贴到 InPrivate 浏览会话中。 这样做可确保没有缓存凭据用于接受邀请。

详细信息

来宾用户邀请不需要通过发送到的电子邮件地址来接受。 这是一次性邀请。 如果用户使用其他帐户接受邀请,或者接受邀请的用户使用发送邀请的电子邮件地址以外的帐户登录到资源,他们可能会看到一 Access denied 条消息。

例如,请考虑此方案。 用户使用Microsoft帐户通过浏览器登录,并且用户在其电子邮件应用程序中收到对其外部用户帐户的电子邮件邀请。 然后,用户选择要接受邀请的链接。 但是,根据用户浏览器中的 Cookie,用户以错误的身份接受了邀请。 因此,当用户使用其外部用户帐户登录到资源时,他们会收到用户在目录中找不到的错误。

还需要帮助吗? 转到 SharePoint 社区