Google 应用脚本 - PayPal API - 获取访问令牌

Google App Script - PayPal API - Get Access Token

我有这个功能,可以给我 cURL 中的访问令牌

curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
    -H "Accept: application/json" \
    -H "Accept-Language: en_US" \
    -u "client_id:secret" \
    -d "grant_type=client_credentials"

来源:https://developer.paypal.com/docs/api/overview/#get-an-access-token

但是当我尝试 运行 google 应用程序脚本中的函数(应该是相同的)时,错误总是:"invalid token"。我做错了什么?

 function lol(){
   var request = UrlFetchApp.fetch("https://api.sandbox.paypal.com/v1/oauth2/token", {
     "Accept": "application/json",
     "Accept-Language": "en_US",
     "CLIENT_ID":"SECRET",
     "grant_type":"application/x-www-form-urlencoded"
   })
   Logger.log(request.getContentText());
 }

CLIENT_ID & SECRET 是个人的,是从我的 PayPal 帐户复制的。

这个修改怎么样?

修改点:

  • 在 UrlFetchApp 中,正如 Sandy Good 所说,您需要明确指定该方法。在您的情况下,它是 "POST".
  • 在 UrlFetchApp 中,默认 Content-Typeapplication/x-www-form-urlencoded
  • curl命令的选项-u是基本授权。
  • curl 命令的选项 -H 是 header。
  • 在PayPal的curl samplegrant_typeclient_credentials

反映以上几点的脚本如下

修改脚本:

function myFunction(){
  var client_id = "client_id"; // Please input your client_id
  var secret = "secret"; // Please input your client secret

  var options = {
    method: "post",
    headers : {
      "Authorization" : " Basic " + Utilities.base64Encode(client_id + ":" + secret),
      "Accept": "application/json",
      "Accept-Language": "en_US"
    },
    payload: {"grant_type": "client_credentials"}
  };
  var request = UrlFetchApp.fetch("https://api.sandbox.paypal.com/v1/oauth2/token", options);
  Logger.log(request.getContentText())
}

如果这对您没有用,我很抱歉。