3
votes

Authentification Java Docusign

J'essaye de connecter docusign en utilisant java. Sous le code que j'utilise.

public class DocuSignExample1 {

    private static final String Recipient = "xxx@gmail.com";
    private static final String SignTest1File = "/src/test/docs/SignTest1.pdf";
    private static final String BaseUrl = "https://demo.docusign.net/restapi";
    private static final String IntegratorKey = "xxxxx";
    private static final String UserId = "xxxxxx";
    private static final String privateKeyFullPath = System.getProperty("user.dir") + "/src/test/keys/docusign_private_key2.txt";
    public static void main(String[] args) {

        System.out.println("\nRequestASignatureTest:\n" + "===========================================");
        byte[] fileBytes = null;
        try {
            String currentDir = System.getProperty("user.dir");

            Path path = Paths.get(currentDir + SignTest1File);
            fileBytes = Files.readAllBytes(path);
        } catch (IOException ioExcp) {
            ioExcp.printStackTrace();
        }

        EnvelopeDefinition envDef = new EnvelopeDefinition();
        envDef.setEmailSubject("Please Sign My Sample Document");
        envDef.setEmailBlurb("Hello, Please Sign My Sample Document.");

        // add a document to the envelope
        Document doc = new Document();
        String base64Doc = Base64.encodeToString(fileBytes, false);
        doc.setDocumentBase64(base64Doc);
        doc.setName("TestFile.pdf");
        doc.setDocumentId("1");

        List<Document> docs = new ArrayList<Document>();
        docs.add(doc);
        envDef.setDocuments(docs);

        // Add a recipient to sign the document
        Signer signer = new Signer();
        signer.setEmail(Recipient);
        signer.setName("Sanjay");
        signer.setRecipientId("1");

        // Above causes issue
        envDef.setRecipients(new Recipients());
        envDef.getRecipients().setSigners(new ArrayList<Signer>());
        envDef.getRecipients().getSigners().add(signer);

        // send the envelope (otherwise it will be "created" in the Draft folder
        envDef.setStatus("sent");

        ApiClient apiClient = new ApiClient(BaseUrl);
        try {
            byte[] privateKeyBytes = null;
            try {
                privateKeyBytes = Files.readAllBytes(Paths.get(privateKeyFullPath));
            } catch (IOException ioExcp) {
                Assert.assertEquals(null, ioExcp);
            }
            if (privateKeyBytes == null)
                return;

            java.util.List<String> scopes = new ArrayList<String>();
            scopes.add(OAuth.Scope_SIGNATURE);

            OAuth.OAuthToken oAuthToken = apiClient.requestJWTUserToken(IntegratorKey, UserId, scopes, privateKeyBytes,
                    3600);
            Assert.assertNotSame(null, oAuthToken);
            // now that the API client has an OAuth token, let's use it in all
            // DocuSign APIs
            apiClient.setAccessToken(oAuthToken.getAccessToken(), oAuthToken.getExpiresIn());
            UserInfo userInfo = apiClient.getUserInfo(oAuthToken.getAccessToken());

            System.out.println("UserInfo: " + userInfo);

            apiClient.setBasePath(userInfo.getAccounts().get(0).getBaseUri() + "/restapi");
            Configuration.setDefaultApiClient(apiClient);
            String accountId = userInfo.getAccounts().get(0).getAccountId();

            EnvelopesApi envelopesApi = new EnvelopesApi();

            EnvelopeSummary envelopeSummary = envelopesApi.createEnvelope(accountId, envDef);
            System.out.println("EnvelopeSummary: " + envelopeSummary);
        } catch (ApiException ex) {
            ex.printStackTrace();
            System.out.println("Exception: " + ex);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Exception: " + e.getLocalizedMessage());
        }
    }
}

 entrez la description de l'image ici

Je copie l'ID client et la clé d'intégration à partir de l'image donnée. p >

Erreur: Erreur lors de la demande d'un jeton d'accès: POST https: // account-d. docusign.com/oauth/token a renvoyé un statut de réponse de 400 Requête incorrecte


0 commentaires

3 Réponses :


1
votes

Habituellement, une réponse 400 Bad Request indique un problème avec le corps de la requête que vous envoyez ou un autre formatage incorrect de la requête. Pour résoudre le problème, je vous recommande d'imprimer le corps de votre demande (c'est-à-dire la définition de l'enveloppe) juste avant de l'envoyer afin que vous puissiez inspecter son contenu et vous assurer que c'est ce que vous attendez.

Au minimum, pour envoyer une enveloppe, vous avez besoin d'un objet d'e-mail, un document, un destinataire et un statut (défini sur "sent").

Lorsque vous imprimez le corps de votre requête en JSON, il devrait ressembler à ceci:

{
    "emailSubject": "API Signature Request",
    "documents": [{
        "documentId": "1",
        "name": "contract.pdf",
        "documentBase64": "<...base64 document bytes...>",
    }],
    "recipients": {
        "signers": [{
            "email": "bob.smith@docusign.com",
            "name": "Bob Smith",
            "recipientId": "1",
            "routingOrder": "1",
        }]
    },
    "status": "sent"
}


2 commentaires

Une erreur se produit lors de la demande de jeton. Cette ligne me donne une erreur. OAuth.OAuthToken oAuthToken = apiClient.requestJWTUserToken (IntegratorKey, UserId, scopes, privateKeyBytes, 3600);


Programme ci-dessus fonctionnant parfaitement avec github.com / docusign / docusign-java-client / blob / master / src / tes‌ t /… . Dès que j'ajoute mes informations d'identification, cela ne fonctionne pas.



1
votes

De votre commentaire à la réponse d'Ergin, il semble que vous n'ayez pas terminé le processus d'authentification JWT.

Je vous suggère de commencer par l'exemple de code DocuSign JWT Grant pour votre langue:

Consultez le fichier readme pour les instructions d'installation et de configuration.

Une fois que vous êtes en mesure de générer un jeton d'accès via le flux JWT, vous pouvez continuer à implémenter votre appel d'API DocuSign lui-même.


3 commentaires

Lors de la génération du jeton, cela me donne une erreur.Le même code fonctionne avec l'ID utilisateur et la clé privée et la clé d'intégrateur de github.com/docusign/docusign-java-client/blob/master/src/tes‌ t /…


Ils ont supprimé le code, je viens de cliquer sur "Java" ( github.com/docusign/ eg-01-java-jwt ) mais cela donne 404!


Désolé pour l'erreur 404. L'exemple JWT a été intégré dans le code-example-java



-1
votes

J'ai rencontré le même problème après avoir accepté l'erreur 400 de consentement disparu. Vous pouvez accepter votre consentement en saisissant cette URL dans un navigateur

https://account-d.docusign.com/oauth/auth?response_type=token&scope=signature&client_id=<integrator key>&state=<random number to avoid request forgery>&redirect_uri=http://example.com/callback/


0 commentaires