Подтвердить что ты не робот

Расширение Chrome (сделано в соответствии с официальным руководством) не работает

https://developer.chrome.com/extensions/getstarted

Этот учебник все еще в порядке? Я загрузил все metioned файлы, и расширение не работает. Я думаю, что есть проблема, связанная с запросом Ajax.

Я получил сообщение:

Невозможно отобразить изображение. Нет ответа от Google Image.

Я попытался выполнить запрос Ajax на другой сайт, но оказалось, что запрос выполняется локально - несмотря на разрешения в файле menifest.json.

4b9b3361

Ответ 1

В этом примере внутри popup.js в строке 60 выполняется вызов https://ajax.googleapis.com/ajax/services/search/images. Теперь это истекло.

Вы можете проверить, предоставив аргумент запроса. Например, https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=chrome даст ответ "Этот API больше не доступен".

Этот форум обсуждает список альтернативных API поиска. https://groups.google.com/forum/#!topic/Google-AJAX-Search-API/Ao9TbQbYgHo

Ответ 2

Да, так это все еще сломан. Я закрепил файл popup.js(ссылка ниже) для работы с googleapis (упоминается в альтернативах, опубликованных UberHans). Я попытался найти исходный репо для изменения PR, но такой удачи не было.

В popup.js требуется добавить ключи cx и api. Если вы читаете код, должно быть довольно ясно, что вам нужно изменить и как получить требуемые ключи cx и api.

https://gist.githubusercontent.com/CrashenX/c4f80340b67e87f13753fb30554f6f01/raw/d8f335d9abe699a63e15d8baec10542e9989a88c/popup.js

UPDATE: если это помогает, вот чем отличается между предоставлением google и тем, что я сделал, чтобы заставить образец работать (cx и key vars необходимо обновить с помощью действительного cx и ключа для работы):

59,61c59,66
<   // https://developers.google.com/image-search/
<   var searchUrl = 'https://ajax.googleapis.com/ajax/services/search/images' +
<     '?v=1.0&q=' + encodeURIComponent(searchTerm);
---
>   // https://developers.google.com/custom-search/json-api/v1/using_rest
>   var cx = 'insert-your-cx-from:https://cse.google.com'
>   // WARNING: Hard-coding your api key in code is really insecure
>   var key = 'insert-your-key-from:https://console.developers.google.com'
>   var searchUrl = 'https://www.googleapis.com/customsearch/v1?searchType=image'
>     + '&cx=' + encodeURIComponent(cx)
>     + '&key=' + encodeURIComponent(key)
>     + '&q=' + encodeURIComponent(searchTerm);
69,72c74,76
<     if (!response || !response.responseData || !response.responseData.results ||
<         response.responseData.results.length === 0) {
<       errorCallback('No response from Google Image search!');
<       return;
---
>     if (!response || !response.items || !response.items.length) {
>         errorCallback('No response from Google Image search')
>         return;
74c78
<     var firstResult = response.responseData.results[0];
---
>     var firstResult = response.items[0];
77,79c81,83
<     var imageUrl = firstResult.tbUrl;
<     var width = parseInt(firstResult.tbWidth);
<     var height = parseInt(firstResult.tbHeight);
---
>     var imageUrl = firstResult.image.thumbnailLink;
>     var width = parseInt(firstResult.image.thumbnailWidth);
>     var height = parseInt(firstResult.image.thumbnailHeight);

Ответ 3

Если вам действительно не нужна эта особенность, вы можете попробовать другие образцы

https://developer.chrome.com/extensions/samples

Это та же идея