我正在尝试实施 salesforce einstein 并尝试获得他们的 api 授权。
在文档中是这样写的:
创建 JWT 有效负载。有效负载是 JSON,其中包含:
sub—您的电子邮件地址。这是您用于注册 Einstein Platform Services 帐户的 Salesforce 组织中包含的电子邮件地址。
aud - 用于生成令牌的 API 端点 URL。
exp - Unix 时间的过期时间。该值是以秒为单位的当前 Unix 时间加上您希望令牌有效的秒数。出于测试目的,您可以在 Time.is 中获取 Unix 时间。
JWT 有效负载看起来像这样的 JSON。
JSON
{
"sub": "<EMAIL_ADDRESS>",
"aud": "https://api.einstein.ai/v2/oauth2/token",
"exp": <EXPIRATION_SECONDS_IN_UNIX_TIME>
}
使用您的 RSA 私钥对 JWT 有效负载进行签名以生成断言。私钥包含在您注册帐户时下载的 einstein_platform.pem 文件中。生成断言的代码因您的编程语言而异。如果你在做手动测试,你可以使用 jwt.io 生成一个断言。
如何在python中生成断言字符串?
发现jwt处理可以用pyjwt来完成。 https://pyjwt.readthedocs.io/en/latest/ 但我对获取断言字符串究竟需要做什么感到困惑。
调用 curl 请求以获取响应
curl -X POST \
https://api.einstein.ai/v2/oauth2/token \
-H 'Content-type: application/x-www-form-urlencoded' \
-H 'cache-control: no-cache' \
-d 'grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJodHRwczovL2FwaS5laW5zdGVpbi5haS92Mi9vYXV0aDIvdG9rZW4iLCJleHAiOjM2MDAsInN1YiI6ImJpdHR1LmNwcEBnbWFpbC5jb20ifQ.MHPzgIGThAwHzGCgEAHU8MyJafbIBQVuK_nW4f5ZUh8hN6eh50XbuP7YnDsCeTH0tIQA0OZlEveVnwnmvi1slnNEhad30NB76J-eLCBYK1xUnj2ZfESRaXxP65XMj_KRWdqgF9dMNLsjA08pPeFkBT1rSM8EmWxlCm_BuDPuQRt1zuSSdtWBInIeBafHhyMmdptTHMTeah0epZiyVhyiGscVkApU0bzhUG5AYGixEldemM6xATWs5EjEfZa-4kG26p2QhyHdjIno2n63nuq82A4Kna4GpHlo7QdqRvvUSDJFB_pM33s_LmMxGY_mNmUuDqpQdJ2k15OF9fvnVTUuVg&undefined='
但得到的答案为
{
"message": "Invalid JWT assertion"
}