如何goo.gl-缩短js中的URL?

ecm*_*aut 6 javascript goo.gl google-client

Prereq:在https://code.google.com/apis/console/为urlshortener创建自己的API密钥

有很多文档可以通过js get api 将goo.gl网址转换为原始网址的各种方法,例如:这里,这里这里 - 至少第一个甚至可以工作.

如果我稍微调整那个,使用insert api将url转换一个小url,但是传递一个{ "longUrl": "https://codepen.io/" },但它会中断.如果你愿意,可以在http://codepen.io/johan/full/EHbGy#YOUR-API-KEY-HERE试试吧,或者在某处运行:

<script>
var api_key = 'YOUR-API-KEY-HERE';

function makeRequest() {
  var request = gapi.client.urlshortener.url.insert({
    'longUrl': 'https://codepen.io/'
  });
  request.execute(function(response) {
    alert(JSON.stringify(window.got = response));
  });
}

function load() {
  gapi.client.setApiKey(api_key);
  gapi.client.load('urlshortener', 'v1', makeRequest);
}
</script>
<script src="https://apis.google.com/js/client.js?onload=load"></script>
Run Code Online (Sandbox Code Playgroud)

......它只是回应错误:

{ "code": 400
, "message": "Required"
, "data": 
  [ { "domain": "global"
    , "reason": "required"
    , "message": "Required"
    , "locationType": "parameter"
    , "location": "resource.longUrl"
    }
  ]
, "error": 
  { "code": 400
  , "message": "Required"
  , "data": 
    [ { "domain": "global"
      , "reason": "required"
      , "message": "Required"
      , "locationType": "parameter"
      , "location": "resource.longUrl"
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

建议?(不,如果您url.insert使用resource.longUrl键将参数更改为对象- 或者只是在没有包装器对象的情况下传递URL ,则它不会更好.)

dou*_*arp 6

它在文档或错误消息中并不是非常清楚,但您的请求应如下所示,并且一切都会很好:

var request = gapi.client.urlshortener.url.insert({
    'resource': {'longUrl': 'https://codepen.io/'}
});
Run Code Online (Sandbox Code Playgroud)