需要用户凭据:Google Cloud Print Submit API

时间:2018-06-01 21:00:38

标签: javascript google-api netsuite google-oauth2 google-cloud-print

我正在尝试访问属于Google云打印的提交API但是我遇到了错误“需要用户凭据”。

我能够通过身份验证获得所有权限并能够检索我的访问令牌。我正在按照本指南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:代码, 范围:https://www.googleapis.com/auth/cloud-platform.read-only, state:state_parameter_passthrough_value, redirect_uri:scriplet url client_id:客户端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 :(得分:2)

正如我所想,问题是如何获取访问令牌。为了获得有效的访问令牌来执行您的云打印业务,您需要包含适当的范围。这意味着你的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云打印进行交互。我希望它有所帮助!