0

我一直在关注如何OAuthSalesforce Einstein. 我有我的private key并且能够创建JWT令牌(底部的代码),但是当我尝试CURL使用已检索到的令牌的文档(步骤 4)中概述的命令时INVALID JWT Assertion出现错误。

文档:https ://metamind.readme.io/docs/generate-an-oauth-token-using-your-key

这就是我创建签名的方式JWT

require('dotenv').config();
const jwtToken = require('jsonwebtoken');

const payload = 
{
 "sub": "<EINSTEIN_PLATFORM_SERVICES_USERNAME>",
 "aud": "https://api.einstein.ai/v2/oauth2/token",
 "exp": <EXPIRATION_SECONDS_IN_UNIX_TIME>
}

const token = jwtToken.sign(payload, process.env.EINSTEIN_KEY, {algorithm : 'RS256'});

知道我做错了什么吗?

4

1 回答 1

0

我花了一段时间才弄清楚...问题是UNIX我给的时间是一年中的某事1970-_-所以当然,由于JWT令牌已过期,我无法从中检索访问令牌Salesforce Einstein

我建议使用以下资源来获得以UNIX秒为单位的正确过期时间:https ://www.epochconverter.com/ 。

这是我生成的最终代码JWT Assertion String

require('dotenv').config()
const fs = require('fs);
const jwt = require('jsonwebtoken');

let privateKey = fs.readFileSync(process.env.PRIVATE_KEY);

const header = {
  algorithm: "RS256"
}

const payload = {
 "sub": "<EINSTEIN_PLATFORM_SERVICES_USERNAME>",
 "aud": "https://api.einstein.ai/v2/oauth2/token",
 "exp": 1907891585 //Epoch timestamp of 6/17/2030
}

let token = jwt.sign(payload, privateKey, header);

使用此代码,我能够检索访问令牌!

于 2020-06-16T02:02:24.550 回答