【问题标题】:Google Apps Script and curlGoogle Apps 脚本和 curl
【发布时间】:2017-05-13 01:16:43
【问题描述】:

这可能是一个非常简单的问题,但我对curl 还很陌生,并且从未正确解释过它。这是我第一次必须通过curl 获取访问令牌,而且我从未见过示例。我的谷歌搜索没有帮助。

拥有访问令牌后,我知道如何发出交易请求,但无法获取令牌以继续该步骤。

以下是获取token的api文档示例:

curl -X POST -u <API USERNAME>:<API SECRET KEY> https://api.neverbounce.com/v3/access_token\
-d grant_type=client_credentials\
-d scope=basic+user

我应该如何在Google Apps Script 中进行此调用,因为UrlFetchApp 需要一个 url,但此示例中的 url 是请求的一部分?

更新

这是我的代码示例:

function NBpost() {
  var dataString = 'grant_type=client_credentials&scope=basic+user';
  var url = "https://api.neverbounce.com/v3/access_token";
  var options =
    {
      "method" : "post",
      "auth": {
        'user': <USERNAME>,
        'pass': <SECRET KEY>,
      },
      body : dataString,
      "muteHttpExceptions" : true
    };
  var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
}

响应总是一样的:

error:"invalid_request", 
error_description:"The grant type was not specified in the request"

我也试过了:

var dataString = {
  "grant_type": "client_credentials",
  "scope" : "basic user"
};

但是响应没有改变。我做错了什么?

更新 2

我做了以下更改:

function myFunction(){
    var url ='https://api.neverbounce.com/v3/access_token';
    var options = {
      method: "post",
      u: {
        <USERNAME> : <SECRET KEY>
      },
      payload: {
        "grant_type": "client_credentials",
        "scope": "basic user"
      },
      muteHttpExceptions: true
    };
    var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
}

现在,我收到此错误:

error:"invalid_client"
error_description:"Client credentials were not found in the headers or body"

【问题讨论】:

    标签: curl google-apps-script access-token


    【解决方案1】:

    下面的示例脚本怎么样?我不知道这是否可以正常工作,因为我没有&lt;API USERNAME&gt;&lt;API SECRET KEY&gt;

    示例脚本:

    var apiusername = <API USERNAME>
    var apisecretkey = <API SECRET KEY>
    var url ='https://api.neverbounce.com/v3/access_token';
    var options = {
      method: 'post',
      headers : {"Authorization" : " Basic " + Utilities.base64Encode(apiusername + ":" + apisecretkey)},
      payload: {
        "grant_type": "client_credentials",
        "scope": "basic+user"
      },
      muteHttpExceptions: true
    };
    var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
    

    如果这不起作用或者我误解了你的问题,我很抱歉。

    【讨论】:

    • 感谢您的尝试,但我收到此错误:Exception: Login information disallowed
    • 对不起。我刚刚更新了它。它包括对标头的基本身份验证。请尝试一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 2014-06-30
    相关资源
    最近更新 更多