我有以下设置来获取访问令牌:
import * as docusign from 'docusign-esign';
const expiresIn = 28800;
export const createClient = async (): Promise<docusign.ApiClient> => {
const apiClient = new docusign.ApiClient({ basePath: process.env.BASE_PATH, oAuthBasePath: process.env.O_AUTH_BASE_PATH });
try {
const response = await apiClient.requestJWTApplicationToken(
process.env.CLIENT_ID,
["signature", "impersonation"],
Buffer.from(process.env.RSA_PRIVATE_KEY.replace(/\\n/g, '\n')),
expiresIn
);
console.log(response.body.access_token) // -> successfully returns access token
apiClient.addDefaultHeader("Authorization", "Bearer " + response.body.access_token);
} catch (error){ throw AppError("My custom error") }
return apiClient;
}
然后在另一个地方,我有以下函数,它应该创建一个信封:
import { EnvelopeDefinition, EnvelopeRecipients, EnvelopesApi, Signer } from 'docusign-esign';
import { createClient } from "./above-file-path.ts";
export const someFunction = async () => {
const signer1: Signer = { email: 'my-personal-email-for-testing@gmail.com', name: 'my name', roleName: 'my name' };
const signer2: Signer = { email: 'client@gmail.com', name: 'client name', roleName: 'Client' };
const recipients: EnvelopeRecipients = { signers: [signer1, signer2] };
const dsApiClient = await createClient();
const envelope: EnvelopeDefinition = {
emailSubject: 'Please sign this agreement',
templateId: 'uuid-of-my-template',
status: 'created',
recipients,
};
const envelopesApi = new EnvelopesApi(dsApiClient);
try {
const { envelopeId, errorDetails } = await envelopesApi.createEnvelope(process.env.ACCOUNT_ID, {
envelopeDefinition: envelope,
});
console.log("Success?: ", envelopeId)
} catch (error) {
console.log(error) // -> This gives: Unauthorized...{"errorCode":"AUTHORIZATION_INVALID_TOKEN","message":"The access token provided is expired, revoked or malformed. Authentication for System Application failed."}
}
}
我一直收到AUTHORIZATION_INVALID_TOKEN
的错误.
Additional Notes:
- 我在收到令牌后立即调用此函数,因此我知道令牌没有过期.
- 我用
account-d.docusign.com
换O_AUTH_BASE_PATH
,用https://demo.docusign.net/restapi
换BASE_PATH
.