Неверный запрос при попытке получить authToken с помощью docusign API

Я новичок в API-интерфейсе DocuSign, и я следил за примером кода для C # на сайте руководства DocuSign. Я не смог выполнить шаг, пока пытался получить AuthToken. Часть моего кода, как показано ниже, в основном такая же, как в образце DocuSign,

public void OAuthAuthorizationCodeFlowTest()
{
        ServicePointManager.Expect100Continue = true;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        // Make an API call with the token
        ApiClient apiClient = new ApiClient(RestApiUrl);
        DocuSign.eSign.Client.Configuration.Default.ApiClient = apiClient;

        // Initiate the browser session to the Authentication server
        // so the user can login.
        string accountServerAuthUrl = 
        apiClient.GetAuthorizationUri(client_id, redirect_uri, true, 
        stateOptional);
        System.Diagnostics.Process.Start(accountServerAuthUrl);

        string accessToken = apiClient.GetOAuthToken(client_id, 
        client_secret, true, AccessCode);
        // login call is available in the authentication api 
        AuthenticationApi authApi = new AuthenticationApi();
        LoginInformation loginInfo = authApi.Login();

       // parse the first account ID that is returned (user might belong to 
       multiple accounts)
        AccountId = loginInfo.LoginAccounts[0].AccountId;
        BaseUri = loginInfo.LoginAccounts[0].BaseUrl;
        Console.WriteLine("accountId: " + AccountId);
        Console.WriteLine("base_uri: " + BaseUri);

Client_id - это мой ключ интегратора, client_secret - секретный ключ, связанный с этим ключом интегратора, верно? Проверял много раз, без проблем. Теперь я не понимаю, почему я все еще получаю ошибку 400. Пожалуйста, пролейте на меня немного света, спасибо !!!


person Wang Yu    schedule 30.05.2018    source источник


Ответы (1)


System.Diagnostics.Process.Start(accountServerAuthUrl); откроет его в браузере, и после успешной аутентификации браузер будет перенаправлен с параметром запроса code=.... в URL-адресе обратного вызова (redirect_uri)

Код в браузере должен быть прочитан вашим WEBApp, а затем вам нужно вызвать приведенный ниже код для генерации AccessToken:

string accessToken = apiClient.GetOAuthToken(client_id, 
        client_secret, true, AccessCode);

Код ниже - это одна часть, чтобы открыть браузер, в идеале он предназначен для тестирования в автономной системе, на WEBApp вы перенаправите браузер на accountServerAuthUrl

public void OAuthAuthorizationCodeFlowTest()
        {

            // Make an API call with the token
            ApiClient apiClient = new ApiClient(RestApiUrl);
            DocuSign.eSign.Client.Configuration.Default.ApiClient = apiClient;

            // Initiate the browser session to the Authentication server
            // so the user can login.
            string accountServerAuthUrl = apiClient.GetAuthorizationUri(client_id, redirect_uri, true, stateOptional);
            System.Diagnostics.Process.Start(accountServerAuthUrl);
        }

Приведенный ниже код запускается, когда пользователь аутентифицируется с помощью DocuSign в браузере и браузер перенаправляется на redirect_uri с помощью code=..., ваше веб-приложение прочитает этот код и отправит его как AccessCode и вызовет приведенный ниже код с вашего контроллера,

string accessToken = apiClient.GetOAuthToken(client_id, client_secret, true, AccessCode);
person Amit K Bist    schedule 30.05.2018