当前位置: 首页 > 知识库问答 >
问题:

Api调用适用于从Postman获取的令牌,但不适用于通过nodejs应用程序获取的令牌

符献
2023-03-14

因此,我正在尝试对第三方 API 提供程序进行 API 调用。在我的nodejs应用程序中接收新令牌没有问题,但是当我尝试在get函数中使用它时,我只收到403错误。但是,如果我通过Postman获得令牌,它就可以正常工作(在应用程序中),这对我来说似乎很奇怪?

如果我尝试在Postman中的get调用中使用从nodejs应用程序获取的令牌,那也是一样的,它不会起作用。

我已经多次检查从我的nodejs应用程序获取的令牌是否有任何错误,但无法理解为什么它不起作用。我使用Firebase来存储它,每次都会更新,没有任何问题。

用于获取和存储令牌的代码如下所示:

const response = await axios.request(options)
      let token = response.data.access_token
      console.log(token) // receiving a new token every time, no issues
      db.doc(`/company1/tokens`).update(tokenObj = { token: token }).then(
        console.log("lagring ferdig")
      )

api调用的代码如下所示:

let doc = await db.collection(`/company1`).doc("tokens").get()

    let data = doc.data()
    //console.log(data.token) 

    const request = await fetch(`https://xxxxx/api/v2/company`, {
      method: 'GET',
      headers: {
        Authorization: `Bearer ${data.token}`, 
        'Content-Type': 'application/json'
      }
    })

所以澄清一下:如果我只是简单地将通过Postman获得的令牌粘贴到火力恢复文档中,它就可以正常工作。

任何关于什么可能导致这种情况的想法?任何帮助都非常感谢。

共有1个答案

公西浩
2023-03-14

原来作用域的设置有问题,当我改为将它们附加到url时,它起作用了。“arynaq”使用jwt.io进行令牌故障排除的好提示。

 url: 'https:/xxxxxx/oauth/token?openid%20email%20profile%20read:findata%20create:findata',
      method: 'POST',
      headers: { 'content-type': 'application/json' },
      data: {
        grant_type: 'password',
        username: process.env.UNAME,
        password: process.env.PW,
        audience: 'https://xxxxxxxxx.no',
        //scope: 'openid%20email%20profile%20read:findata%20create:findata', <-- this did not work
        client_id: process.env.CID,
        client_secret: process.env.CS
      }
 类似资料:
  • 问题内容: 在过去十年中,有少数人提出了类似的问题,但没有人给出任何答案。我需要编写一个收集和存储RSRP,RSRQ,CINR和Cell ID的Android应用。答案必须与手机硬件允许的精度一样(我正在三星银河S5上进行测试),因为我需要使用这些值进行后处理统计。 有谁知道如何使用telephonyManager或CellSignalStrengthLte获得RSRP?还是有另一种也许更好的方式

  • 我能够成功地打电话给邮递员: /mfp/api/az/v1/token和 /mfpadmin/management-apis/2.0/runtimes/mfp/applications 我正在获取从/mfp/api/az/v1/token接收的承载令牌,并将其添加到/mfp/applications的授权标头中。 我收到了来自两者的200个响应,并从每个API中获取了预期的信息。 然后,我选择从P

  • 我有一个受保护的Web API正在运行,我想访问它。在Azure中,应用注册是: 具有Web API租户管理员权限的SPA Web API没有租户管理员权限,因此请求其id的令牌将返回“应用需要访问资源的权限”错误 我正在尝试获取Web API的承载令牌。问题是它不适用于MSAL,但适用于ADAL。 以下是我的“SPA”的ADAL vanilla JS代码: 如果我在“邮递员”中复制令牌并执行请求

  • 一个使用Jersey在Java中构建的方法,它接受两个参数并存储在数据库中,它可以和postman一起正常工作,但当我在Android应用程序中使用它时,它不起作用。我试图通过截击和改装发送请求。 服务器端代码: Android代码: 公共无效寄存器(最终字符串用户名、最终字符串密码){ 邮差回应 截击请求: 公共无效寄存器Volley(最终字符串用户名,最终字符串密码){

  • 我正在做一个与运行时间有关的练习。exec(),我理解这个运行时。exec不是shell解释器,这就是为什么我执行“bash-c'command'”,但出于某种原因,我可以执行像ls这样的命令,但不能执行echo或重定向或多个命令。这些都不起作用: 这是我的java代码: 我使用以下语法运行上述命令: 这是有效的: 我在Ubuntu 20.04和zsh上使用openjdk 11.0.15。有人能告

  • 当我在Android手机上调试应用程序时,我绝对没有遇到任何错误,但在AVD上,我一开始就得到了一个NullPointerException()。我的Android设备在22 API的Lollipop(5.1.1)上运行,我的AVD在28 API的Pie(9.0)上运行。我在gradle中将最小SDK设置为21,编译SDK设置为28。 这是错误: E/AndroidRuntime:致命异常:主进程