2012-10-31 63 views
6

前提條件:創建自己的urlshortener API密鑰在https://code.google.com/apis/console/我該如何goo.gl-在js中縮短url?

有很多文檔爲通過JS把一個goo.gl網址到原來的URL get API的各種方法,例如:hereherehere - - 至少第一個甚至可以工作。

如果我調整是一個非常輕微使用insert API到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> 

...它只是會顯示錯誤:

{ "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" 
     } 
    ] 
    } 
} 

建議? (不,這是行不通的任何更好,如果你有改變url.insert參數對象的resource.longUrl鍵 - 或只是路過的URL沒有包裝對象)

回答

6

這不是在文檔或錯誤信息的超清晰,但是你的要求應該如下所示和一切都會好起來:

var request = gapi.client.urlshortener.url.insert({ 
    'resource': {'longUrl': 'https://codepen.io/'} 
}); 
+0

謝謝!保持良好的文檔與製作良好的API一樣困難。 – ecmanaut

+0

@ecmanaut什麼,你是指這個鏈接到一個'URL資源'的例子沒有幫助? https://developers.google.com/url-shortener/v1/url/url#resource – doublesharp

+0

developers.google.com有很多機會可以幫助有人(和谷歌網站管理員工具能力)改進其404s 。我可以看到這是一個不間斷的全職QA職位。 – ecmanaut

1

我想我會放棄對這個混亂的客戶端庫,事實證明,如果我能做到這一點coffescript,而不是裝載所有的五行該cruft,因爲我已經有jQuery無論如何:http://codepen.io/johan/pen/puJyH

api = 'https://www.googleapis.com/urlshortener/v1/url' 
api += "?key=#{key}" if key = location.search.slice 1 

$.ajax 
    url: api 
    type: 'POST' 
    data: JSON.stringify(longUrl: url) 
    contentType: 'application/json' 
    success: (got) -> 
    alert "shortened url: #{got.id}" 
+0

注意:這個[插入](https://developers.google.com/url-shortener/v1/url/insert)api在11月15日之前工作正常,但此後一直沒有通過404錯誤的CORS OPTIONS請求,所以實際的POST不會發生。我已在[郵件列表](https://groups.google.com/forum/?fromgroups=#!forum/google-url-shortener)和文檔網站上提交了錯誤報告。 Google js客戶端仍然有效,因爲它向後彎曲以創建隱藏的www.googleapis.com iframe,它代表您的頁面執行非CORS rpc ajax請求。 – ecmanaut

+0

謝謝你。它真的幫助我! –