2012-10-31 30 views
6

Prereq: tạo cho mình một khóa API cho urlshortener tại https://code.google.com/apis/console/Làm cách nào để goo.gl rút ngắn url trong js?

Có rất nhiều tài liệu cho nhiều cách khác nhau của biến một url goo.gl vào URL ban đầu thông qua js get api, ví dụ như: here, herehere - - và ít nhất cái đầu tiên thậm chí còn hoạt động.

Nếu tôi tinh chỉnh một mà bao giờ nên hơi để sử dụng insert api để chuyển đổi một url - một url nhỏ, đi qua một { "longUrl": "https://codepen.io/" } thay vào đó, tuy nhiên, nó phá vỡ. Hãy thử nó tại http://codepen.io/johan/full/EHbGy#YOUR-API-KEY-HERE nếu bạn thích, hoặc chạy một nơi nào đó:

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

... nó chỉ trả lời bằng một lỗi:

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

Gợi ý? (Không, nó không hoạt động tốt hơn nếu bạn thay đổi tham số url.insert thành đối tượng có khóa resource.longUrl - hoặc chỉ chuyển url mà không có đối tượng bao bọc.)

Trả lời

6

Nó không siêu rõ ràng trong tài liệu hoặc thông báo lỗi, nhưng yêu cầu của bạn sẽ giống như sau và tất cả sẽ tốt:

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

Cảm ơn! Duy trì tài liệu tốt cũng khó như tạo ra các API tốt. – ecmanaut

+0

@ecmanaut Điều gì, bạn có nghĩa là liên kết này đến một ví dụ về 'Tài nguyên URL' không hữu ích? https://developers.google.com/url-shortener/v1/url/url#resource – doublesharp

+0

Có rất nhiều cơ hội để developers.google.com cải thiện với người nào đó (và Công cụ quản trị trang web của Google có khả năng) để phân loại các 404 của mình . Tôi có thể thấy rằng đó là một vị trí QA không ngừng toàn thời gian. – ecmanaut

1

tôi nghĩ rằng tôi sẽ thả các thư viện client lộn xộn cho điều này, khi nó quay ra tôi có thể làm điều đó năm dòng của coffescript thay vì tải tất cả mà cruft, như tôi đã có jQuery xung quanh anyway: 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

Lưu ý: [chèn] này (https://developers.google.com/url-shortener/v1/url/insert) api đã hoạt động tốt trước ngày 15 tháng 11, nhưng từ đó đã thất bại trong yêu cầu CORS OPTIONS với lỗi 404 vì vậy POST thực tế không thể xảy ra. Tôi đã gửi báo cáo lỗi cả trên [danh sách gửi thư] (https://groups.google.com/forum/?fromgroups=#!forum/google-url-shortener) và trang web tài liệu. Ứng dụng khách google js vẫn hoạt động, vì nó uốn cong ngược lại để tạo iframe www.googleapis.com ẩn mà không thực hiện yêu cầu không CORS rpc ajax thay mặt cho trang của bạn. – ecmanaut

+0

cảm ơn vì điều này. nó thực sự đã giúp tôi! –

Các vấn đề liên quan