无法使用 Salesforce Einstein 的私钥创建 OAuth 令牌



我一直在关注有关如何为Salesforce Einstein创建OAuth令牌的文档。我有我的private key并且能够创建JWT令牌(底部的代码(,但是当我使用检索到的令牌尝试文档(步骤 4(中概述的CURL命令时,我收到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'});

知道我做错了什么吗?

我花了一段时间才弄清楚这一点...问题是我给出的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);

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

最新更新