2012-10-31 35 views
6

習得条件:JS get APIを介して、例えば、元のURLにgoo.gl URLを回すのさまざまな方法のためのドキュメントがたくさんありますhttps://code.google.com/apis/console/jsでURLを短くするにはどうすればよいですか?

でurlshortenerためのAPIキーを自分で作成:hereherehereは - 少なくとも最初のものは動作します。

私が代わりに{ "longUrl": "https://codepen.io/" }を渡し、に小さなURLをURL を変換するinsert APIを使用するために、ほんの少しその1を微調整する場合は、しかし、それが壊れます。あなたが好きなら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" 
     } 
    ] 
    } 
} 

提案を? (いいえ、resource.longUrlキーを持つオブジェクトにurl.insertパラメータを変更するか、ラッパーオブジェクトなしでURLを渡すだけでうまくいきません)。

答えて

6

ドキュメントやエラーメッセージで非常に明確ではありませんが、私はそれが判明したときに、私はすべてのそれを5つのcoffescriptのラインの代わりに、読み込みを行うことができ、このために厄介なクライアントライブラリをドロップすると思う

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

ありがとうございました!良いドキュメントを維持することは、良いAPIを作ることと同じくらい難しいことです。 – ecmanaut

+0

@ecmanaut 'URL Resource'の例へのこのリンクは役に立ちませんでしたか? https://developers.google.com/url-shortener/v1/url/url#resource – doublesharp

+0

developers.google.comでは、他のユーザーと協力して404サイトを整理することができます。私はそれが絶え間ない完全なQAの立場であることが分かりました。 – ecmanaut

1

:しかし、あなたの要求は、次のようになりますし、すべてが順調になりますあのクルフトは、とにかく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

注:この[insert](https://developers.google.com/url-shortener/v1/url/insert)apiは11月15日より前に正常に動作しましたが、CORS OPTIONS要求に404エラーで失敗しています実際のPOSTは実行できません。私は[メー​​リングリスト](https://groups.google.com/forum/?fromgroups=#!forum/google-url-shortener)とdocsサイトの両方でバグレポートを提出しました。あなたのページに代わって非CORS rpc ajaxリクエストを行う非表示のwww.googleapis.com iframeを作成するために後方に曲がるので、google jsクライアントはまだ動作します。 – ecmanaut

+0

これに感謝します。それは本当に私を助けた! –

関連する問題