6

Google の URL 短縮 APIを使用して Chrome で現在アクティブなタブの URL を短縮する最初の Google Chrome 拡張機能を作成しています。

私は長年の SW 開発者 (asm/C++) ですが、この "webby" についてはまったくの初心者です。:)

js または jquery を使用して http POST リクエストを作成 (および処理) する方法がわかりません。curl の例以外の POST メカニズムを理解していないと思います。

私のjavascriptファイルは現在次のようになっています:

chrome.browserAction.onClicked.addListener(function(tab) { 
    console.log('chrome.browserAction.onClicked.addListener');

chrome.tabs.getSelected(null, function(tab) {
    var tablink = tab.url;
    console.log(tablink);

    //TODO send http post request in the form
    // POST https://www.googleapis.com/urlshortener/v1/url
    //   Content-Type: application/json
    //   {"longUrl": "http://www.google.com/"}
});

});

4

5 に答える 5

5

2016 年 1 月の更新: リンク短縮 APIが認証を要求するようになったため、これは機能しなくなりました。

簡単な解決策をブログに投稿しました: http://uihacker.blogspot.com/2013/04/javascript-use-googl-link-shortener.html

Google クライアント API を非同期的に読み込み、リンク短縮サービスが読み込まれるときに別のコールバックを使用します。サービスが読み込まれた後、このサービスを再度呼び出すことができます。簡単にするために、デモの URL を 1 つだけ短縮しました。単純に URL を短縮するために API キーが必要なようには見えませんが、このサービスへの特定の呼び出しでは API キーが必要になる場合があります。これは、最新のブラウザーで動作する基本バージョンです。

var shortenUrl = function() {
  var request = gapi.client.urlshortener.url.insert({
    resource: {
      longUrl: 'http://your-long-url.com'
    }
  });
  request.execute(function(response) {
    var shortUrl = response.id;
    console.log('short url:', shortUrl);
  });
};

var googleApiLoaded = function() {
  gapi.client.load("urlshortener", "v1", shortenUrl);
};

window.googleApiLoaded = googleApiLoaded;
$(document.body).append('<script src="https://apis.google.com/js/client.js?onload=googleApiLoaded"></script>');
于 2013-04-08T12:58:45.290 に答える
5

最も簡単な解決策は、jquery の$.ajax関数を使用することです。これにより、コンテンツを非同期で Google に送信できます。データが戻ってきたら、応答の処理を続行できます。

コードはこの質問のようになります

$.ajax({
        url: 'https://www.googleapis.com/urlshortener/v1/url?shortUrl=http://goo.gl/fbsS&key=AIzaSyANFw1rVq_vnIzT4vVOwIw3fF1qHXV7Mjw',
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        data: '{ longUrl: "' + longURL +'"}',
        dataType: 'json',
        success: function(response) {
            var result = JSON.parse(response); // Evaluate the J-Son response object.
        }
     });

ここにjquery ajax apiがあります

于 2012-10-02T19:22:51.733 に答える
-1

この問題に関する迅速かつ簡単な解決策を考え出しました。問題が解決することを願っています。

<html>
<head>
<title>URL Shortener using Google API. http://goo.gl </title>
<script src="https://apis.google.com/js/client.js" type="text/javascript"> </script>
</head>
<script type="text/javascript">
function load() {
    gapi.client.setApiKey('[GOOGLE API KEY]');
    gapi.client.load('urlshortener', 'v1', function() { 
        document.getElementById("result").innerHTML = "";

        var Url = "http://onlineinvite.in";
        var request = gapi.client.urlshortener.url.insert({
            'resource': {
            'longUrl': Url
            }
        });
        request.execute(function(response) {

            if (response.id != null) {
                str = "<b>Long URL:</b>" + Url + "<br>";
                str += "<b>Test Short URL:</b> <a href='" + response.id + "'>" + response.id + "</a><br>";
                document.getElementById("result").innerHTML = str;
            }
            else {
                alert("Error: creating short url \n" + response.error);
            }
        });
    });
}
window.onload = load;
</script>
<body>
<div id="result"></div>
</body>
</html>

[GOOGLE API KEY] を正しいキーに置き換える必要があります

LongUrl は Url 値を置き換える必要があります。http://example.com

于 2015-12-03T19:49:40.617 に答える