Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 将简单OAuth2与NodeJS一起使用时,内容类型与JSON不兼容_Node.js_Azure - Fatal编程技术网

Node.js 将简单OAuth2与NodeJS一起使用时,内容类型与JSON不兼容

Node.js 将简单OAuth2与NodeJS一起使用时,内容类型与JSON不兼容,node.js,azure,Node.js,Azure,我希望使用Azure AD进行身份验证 server.js const express = require("express"); const app = express(); const port = process.env.PORT || 5000; var bodyParser = require("body-parser"); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json())

我希望使用Azure AD进行身份验证

server.js

const express = require("express");
const app = express();
const port = process.env.PORT || 5000;

var bodyParser = require("body-parser");

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.get("/authorize", async (req, res) => {
  const credentials = {
    client: {
      id: "xxx",
      secret: "xxx"
    },
    auth: {
      tokenHost:
        "xxx"
    }
  };

  const oauth2 = require("simple-oauth2").create(credentials);
  const tokenConfig = {
    scope: "<scope>" 
  };

  const httpOptions = {};

  try {
    const result = await oauth2.clientCredentials.getToken(
      tokenConfig,
      httpOptions
    );
    const accessToken = oauth2.accessToken.create(result);
  } catch (error) {
    console.log("Access Token error", error.message);
  }
const express=require(“express”);
常量app=express();
const port=process.env.port | 5000;
var bodyParser=require(“主体解析器”);
use(bodyParser.urlencoded({extended:false}));
use(bodyParser.json());
app.get(“/authorize”),异步(请求,res)=>{
常量凭据={
客户:{
id:“xxx”,
秘密:“xxx”
},
认证:{
令牌主机:
“xxx”
}
};
const oauth2=require(“simple-oauth2”).create(凭证);
常量令牌配置={
范围:“”
};
常量httpOptions={};
试一试{
const result=await oauth2.clientCredentials.getToken(
令牌配置,
httpOptions
);
const accessToken=oauth2.accessToken.create(结果);
}捕获(错误){
log(“访问令牌错误”,error.message);
}
我遵循了存储库提供的示例,但我得到了一个错误
访问令牌错误内容类型与JSON不兼容


如何使用NodeJS和简单的OAuth2在Microsoft Azure上授权我的OAuth2?

我也遇到了这个错误。在我的例子中,原因是OAuth2服务器使用text/plain的内容类型头进行响应,即使主体实际上是JSON

将simple-oauth2的http选项中的“json”配置选项更改为“force”,我就解决了这个问题。

我发现:

请确保在示例中更改了三个URL。在没有
{json:true}


此解决方案不同于

尝试将这一行去掉
app.use(bodyParser.json());
我也有同样的问题,但我没有使用bodyParser。如果你想使用node.js获取Azure AD访问令牌,你可以使用sdk。有关更多详细信息,请参阅你是否解决了错误?我也有同样的问题。.你能给我看一下实际的代码吗?提前谢谢!我通过将其更改为true来修复它。
。getToken(tokenConfig,{json:true})