Требуются учетные данные пользователя: API Google Cloud Print Submit - PullRequest
0 голосов
/ 02 июня 2018

Я пытаюсь получить доступ к API отправки, который не входит в Google Cloud Print, однако я сталкиваюсь с ошибкой «Требуются учетные данные пользователя».

Я могу пройти аутентификацию и получить свой токен доступа.Я следовал этому руководству https://developers.google.com/cloud-print/docs/appDevGuide

Я не знаю, где это идет не так.Кто-нибудь знает, где учетные данные должны быть введены?

Вот мой код для этой части:

function submitPrintJob(token){
        try{

            var params = {'printerid':'PRINTER_ID','title':'Test Print Job','ticket':{"version": "1.0", "print": {}},'contentType':'application/pdf'};
            var response = https.post({
                url: 'https://www.google.com/cloudprint/submit',
                body: params,
                headers: {'Authorization':'Bearer ' + token}
            });

            log.debug('submitPrintJob','Response - ' + response.body);
        }catch(e){
            log.error('submitPrintJob','Error - ' + e.message);
        }
    }

Этот код выполняется в Netsuite, где https.postИдет API. Я также знаю, что не отправляю документ, но мне по крайней мере нужно пройти этот шаг.Я также получаю эту ошибку, используя Postman.

Редактирование для добавления части, в которой я получаю токен: Я отправляю запрос по адресу: https://accounts.google.com/o/oauth2/v2/auth Параметры: response_type: code, scope: https://www.googleapis.com/auth/cloud-platform.read-only, state: state_parameter_passthrough_value, redirect_uri: URL-адрес scriplet client_id: идентификатор клиента

Google oauth возвращает код авторизации.Я обмениваю код на токен следующим образом:

        function getToken(code){
            try{

                var params = {'code':code,'client_id':CLIENT_ID,'client_secret':CLIENT_SECRET,'redirect_uri':REDIRECT_URI,'grant_type':'authorization_code'}
                var response = https.post({
                    url: 'https://www.googleapis.com/oauth2/v4/token',
                    body: params,
                    headers: {'Content-Type':'application/x-www-form-urlencoded'}
                });

                var token = response.body.access_token;

                submitPrintJob(token);

            }catch(e){
                log.error('getAuthCode','Error - ' + e.message);
            }
        }

1 Ответ

0 голосов
/ 02 июня 2018

Как я и думал, проблема в том, как вы получаете токен доступа.Чтобы получить действительный токен доступа для ведения бизнеса в области облачной печати, необходимо указать соответствующую область действия.Это означает, что ваш объект params должен выглядеть следующим образом:

var params = {'code':code,'client_id':CLIENT_ID,'client_secret':CLIENT_SECRET,'redirect_uri':REDIRECT_URI, 'scope': 'https://www.googleapis.com/auth/cloudprint', 'grant_type':'authorization_code'}

Это должно дать вам действительный токен доступа для взаимодействия с Google Cloud Print.Надеюсь, это поможет!

...