2012-10-31 12 views
6

Önkoşul: https://code.google.com/apis/console/js'de nasıl url kısaltılır?

js aracılığıyla orijinal URL içine get api bir goo.gl url dönüm çeşitli yollar için docs bir sürü olan en Kendinize urlshortener API anahtarını oluşturmak örn: here, here ve here - - ve en azından ilk kişi bile işe yarıyor. Bunun yerine bir { "longUrl": "https://codepen.io/" } geçen bir URL küçücük url dönüştürmek için insert API kullanmak için bu kadar biraz Şunu çimdik Eğer

olsa da, kırılır. İstersen http://codepen.io/johan/full/EHbGy#YOUR-API-KEY-HERE adresten deneyin veya bu bir yere çalıştırın: bir hatayla

<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> 

... sadece cevap:

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

Öneriler? (url.insert parametresini resource.longUrl anahtarıyla bir nesneye değiştirirseniz veya URL'yi sarmalayıcı nesnesi olmadan iletirseniz (Hayır, daha iyi çalışmaz.)

cevap

6

Dokümanlar veya hata iletilerinde çok net değil. ama isteğiniz aşağıdaki gibi görünmelidir ve her şey iyi olacak:

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

Teşekkürler! İyi dokümanların korunması, iyi API'lar yapmak kadar zor. – ecmanaut

+0

@ecmanaut Ne demek istiyorsun, bu bağlantıya bir 'URL Kaynağı' örneğinin faydalı olmadığını mı kastediyorsun? https://developers.google.com/url-shortener/v1/url/url#resource – doublesharp

+0

developers.google.com'un, 404'lü reklamlarını (ve Google Web Yöneticisi Araçları'na sahip) birisiyle geliştirmesi için çok fazla fırsat var. . Kesintisiz bir tam zamanlı QA pozisyonu olduğunu görebiliyordum. – ecmanaut

1

Ben çıkıyor ben hepsini yüklenmesi yerine coffeescript beş satırları yapabilir, bunun için dağınık istemci kütüphanesi atacaklar Zaten etrafında jQuery olduğu gibi, bu hırsızlık: 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

Not: Bu [insert] (https://developers.google.com/url-shortener/v1/url/insert) API 15 Kasım'dan önce iyi çalıştı, ancak bu yana 404 hatasıyla CORS OPTIONS isteğinde başarısız oldu. gerçek POST olamaz. Hem [postalama listesi] (https://groups.google.com/forum/?fromgroups=#!forum/google-url-shortener) ve dokümanlar sitesinde bir hata raporu yazdım. Google js istemcisi hala çalışır, çünkü sizin için sayfanın adına CORS olmayan rpc ajax istekleri yapan gizli bir www.googleapis.com iframe yaratır. – ecmanaut

+0

bunun için teşekkürler. gerçekten bana yardımcı oldu! –