首页 > 解决方案 > 使用 Graph API 更新用户信息

问题描述

这是关于使用 Graph API 更新登录用户的个人资料信息的问题

我正在使用(https://docs.microsoft.com/en-us/graph/tutorials/javascript)上的教程。它让您:

它工作得很好,看起来很棒。

但是,我很难更新用户信息。我将示例代码剥离为仅获取用户信息,因为我不处理日历事件。

获取访问令牌、创建客户端和获取用户配置文件都可以正常工作:

// Create an authentication provider
const authProvider = {
   
    getAccessToken: async () => {
      console.log('authProvider');
      return await getToken();
    }
  };
  
  // Initialize the Graph client
  const graphClient = MicrosoftGraph.Client.initWithMiddleware({authProvider});

  async function getUser() {

    return await graphClient
      .api('/me')
      // Only get the fields used by the app
      .select('id,displayName,userPrincipalName')
      .get();
  }

我替换了函数 getEvents() 的内容来更新用户

let user = {
        officeLocation: "Home Sweet Home"
    }

    try {
      return await graphClient.api('/me').update(user);
    }
    catch (error) {
      console.log(error);
      updatePage(Views.error, {
        message: 'Error logging in',
        debug: error
      });
    }

https://docs.microsoft.com/en-us/graph/api/user-update

我想更新一些基本的东西,比如用户的 officeLocation,但是它没有用。

我正确地在我的应用程序的权限中提供了适当的权限和范围,如下所示: 权限

我不断收到状态码 405 错误,这意味着不允许使用 HTTP 方法。但是文档特别告诉我要使用更新功能,即 PATCH。

在此处输入图像描述

有人可以提供工作代码(和权限/范围属性)来更新用户的属性,以便我知道正确的过程是什么。

谢谢!

9/22 更新:

我还添加了全局管理员角色。不幸的是,我仍然收到 405 Method ErrorMethodNotAllowed 错误。

添加了管理员角色

9/23 更新:

在 ( https://developer.microsoft.com/en-us/graph/graph-explorer )使用了 Graph Explorer 。当我尝试在“/me”上使用“补丁”时,我没有同意的权限。因此,查询因“ErrorMethodNotAllowed”而失败。

正文是:{“jobTitle”:“test”}

使用图形资源管理器

标签: azuremicrosoft-graph-api

解决方案


给用户一个全局管理员角色,然后尝试调用。看起来您正在直接使用 MSA 帐户。请获取 Azure Active Directory 用户的 UserPrincipalName(UPN),然后使用这些凭据登录到 Graph Explorer,并通过选择齿轮按钮授予 Directory.AccessAsUser.All 权限--> 选择权限--> Directory.AccessAsUser.All 和然后尝试通过在 JSON 有效负载中提供 officeLocation 来更新。它对我有用。


推荐阅读