reactjs 访问令牌验证失败:客户端ID 5e 3ce 6c 0 - 2b 1f-4285- 8d 4 b-75 ee 78787346无权调用此http触发器

lsmd5eda  于 2023-04-11  发布在  React
关注(0)|答案(1)|浏览(90)

我有一个使用vscode中的teams toolkit创建的teams应用程序,目前我正在使用它。
我也向应用程序添加了一个Azure函数。我可以在本地调试中调用该函数。但是当我尝试在将其部署到Azure后调用该函数时,我会收到以下错误:
访问令牌验证失败:客户端ID 5e 3ce 6c 0 - 2b 1f-4285- 8d 4 b-75 ee 78787346无权调用此http触发器
我按照本指南https://github.com/OfficeDev/TeamsFx/wiki/Multi-tenancy-Support-for-Azure-AD-app将AAD应用程序设置为多租户应用程序
我的fetch调用在我的代码中看起来像这样

const teamsfx = new TeamsFx();
  const accessToken = await teamsfx.getCredential().getToken("");
  const response = await fetch(
    `${process.env.REACT_APP_FUNC_ENDPOINT}/api/POST_request_to_db`,
    {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        Authorization: `Bearer ${accessToken?.token || ""}`,
      },
      body: JSON.stringify(requestInfo),
    }
  )
    .then((response) => response.json())
    .then((data) => {
      console.log("Success:", data);
    })
    .catch((error) => {
      console.error("Error:", error);
    });
}

该应用程序基于SSO选项卡模板构建。
我不知道是否有什么问题,在AAD应用程序或令牌?我试图运行teamsFX作为IdentityType应用程序和用户。但没有任何工作。

tyg4sfes

tyg4sfes1#

我也遇到了类似的问题,结果发现这与访问权限有关,但不是人们所期望的方式。
即使我是有问题的团队通道的所有者,但在“完全”控制的情况下,简单的GET也会导致问题。

首先,请确认访问令牌是正确的站点,可以为空,例如:

.getToken(`https://yourcompany.sharepoint.com/.default`);

第二,返回的不是实际的token本身,实际的token是返回的访问令牌promise的一个属性,例如:

accessTokenPromise = teamsUserCredential?.getToken(`https://loringengineers.sharepoint.com/.default`);

ActualToken = accessTokenPromise.token

好吧,反正这些都是让我绊倒的东西。

相关问题