我尝试在nextjs应用程序中从ms graph api获取访问令牌。它在postman中运行良好,但当我在应用程序中执行此操作时,我得到“AADSTS9002326:跨源令牌兑换只允许“单页应用程序”客户端类型。”我甚至以前也用过同样的方法,但在Azure函数中,这很有效。
下面是nextjs应用程序的代码
var url = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token`;
const { post, data, error, loading } = useFetch<any>(url);
const requestParams = new FormData();
requestParams.append('grant_type', 'client_credentials');
requestParams.append('client_id', clientId);
requestParams.append('client_secret', clientSecret);
requestParams.append('scope', 'https://graph.microsoft.com/.default');
useEffect(() => {
const timeoutId = setTimeout(() => void post(requestParams), 200);
return () => clearTimeout(timeoutId);
}, []);
const accessToken = data?.access_Token || "key not found";
return { post, data, accessToken, error, loading };
我都尝试过将Azure中的身份验证设置为SPA和Web,但仍然没有成功。
我真的可以使用一些技巧,当在一个nextjs应用程序这样做。
1条答案
按热度按时间dnph8jn41#
当请求中缺少“Origin”标头时会发生此错误,请查看git上的评论,类似问题-https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/2482#issuecomment-717576089
尝试添加标题:
来源:http://localhost
我希望这能有所帮助
谢谢