Проблема с oAuth в docusign в django python - PullRequest
0 голосов
/ 22 января 2020

Проблема при запросе токена, мы получаем ошибку «Недействительный грант» (Response - 400). Пожалуйста, прикрепите код python, который мы используем для того же.

Мы также пытались сделать то же самое с почтальоном и получили то же сообщение об ошибке.

Мы также добавили URL обратного вызова на панели docusign

Пожалуйста, смотрите ниже код: -

import json
import requests
from django.core.mail import send_mail
from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpResponseRedirect
import base64
from .utils import return_csv_values, np, get_current_day_month, return_csv_values_application

from .process_docments import embedded_signing_ceremony_contract, embedded_signing_ceremony_application
import pandas as pd

from .models import DocumentSigned

CLIENT_AUTH_ID = 'my integration id'
CLIENT_SECRET_ID = 'my secret id'


# Create your views here.
def get_access_token(request):
    base_url = "https://account-d.docusign.com/oauth/auth"
    auth_url = "{0}?response_type=code&scope=signature click.manage organization_read permission_read dtr.documents.read&client_id={1}&redirect_uri={2}" \
        .format(base_url, CLIENT_AUTH_ID, "http://127.0.0.1:8000/auth_login")
    # print(request.build_absolute_uri())
    return HttpResponseRedirect(auth_url)

#callback url
def auth_login(request):
    access_code = request.GET['code']
    # return HttpResponse(access_code)

    base_url = "https://account-d.docusign.com/oauth/token"
    auth_code_string = '{0}:{1}'.format(CLIENT_AUTH_ID, CLIENT_SECRET_ID)
    print(auth_code_string)
    auth_token = base64.b64encode(auth_code_string.encode('utf-8'))
    auth_token = auth_token.decode("utf-8")
    print(auth_token)
    req_headers = {"Authorization": "Basic {0}".format(auth_token), "Content-Type": "application/x-www-form-urlencoded"}
    post_data = {'grant_type': 'authorization_code', 'code': access_code}
    try:
        r = requests.post(base_url, data=post_data, headers=req_headers)
        print(r)
        return HttpResponse(json.dumps(r))
    except Exception as e:
        print(str(e))
        return HttpResponse(str(e))

1 Ответ

0 голосов
/ 24 января 2020

это код, который я использую, обратите внимание на некоторые отличия от того, что вы делаете:

        string endpoint = string.Format("{0}/oauth/token", accountServerUrl);
        var values = new Dictionary<string, string>();
        values.Add("grant_type", "authorization_code");
        values.Add("code", token);
        if (redirectUri != null)
            values.Add("redirect_uri", redirectUri);
        var content = new FormUrlEncodedContent(values);
        var auth = string.Format("{0}:{1}", clientId, clientSecret);
        var bytes = System.Text.Encoding.ASCII.GetBytes(auth);
        var encodedAuth = Convert.ToBase64String(bytes);
        httpClient.DefaultRequestHeaders.Add("Authorization", string.Format("Basic {0}", encodedAuth));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...