Google Translate API возвращает 403 (PHP)

Речь идет о Google Translate API

  1. Я устанавливаю проект и включаю биллинг (немного денег на счету)

  2. Я создал ключ для серверного приложения (также пытался использовать ключ браузера) и добавил все 3 IP-адреса, которые у меня есть (домашний и 2 сервера)

Что я вижу:

  1. Он работает в apis-explorer и в адресной строке браузера (https://www.googleapis.com/language/translate/v2/detect?q=an%20english%20text&key=MY_KEY)

  2. Он возвращает ошибку 403, если я пытаюсь получить тот же URL-адрес из кода PHP:

    $ apiKey = 'MY_KEY';

    $ url = 'https://www.googleapis.com/language/translate/v2/detect?q=an%20english%20text&key= '. $ apiKey. '';

    $ handle = curl_init ($ url);

    curl_setopt ($ handle, CURLOPT_RETURNTRANSFER, истина);

    $ response = curl_exec ($ дескриптор);

    curl_close ($ handle);

    print_r (json_decode ($ response, true));

результат:

Array (
    [error] => Array (
            [errors] => Array (
                    [0] => Array (
                            [domain] => usageLimits
                            [reason] => ipRefererBlocked
                            [message] => There is a per-IP or per-Referer restriction configured on your API key and the request does not match these restrictions. Please use the Google Developers Console to update your API key configuration if request from this IP or referer should be allowed.
                            [extendedHelp] => https://console.developers.google.com
                        ))
            [code] => 403
            [message] => There is a per-IP or per-Referer restriction configured on your API key and the request does not match these restrictions. Please use the Google Developers Console to update your API key configuration if request from this IP or referer should be allowed.
        ))

Я проверял IP-адреса десятки раз, пытался использовать ключ браузера с разрешенным URL-адресом в качестве ссылки. Нет идей.


person Scarecrow    schedule 04.02.2015    source источник


Ответы (2)


Спасибо админам, помогли разобраться. По умолчанию - curl с использованием нашего ipv6-адреса ...

Итак, у нас есть три варианта:

  1. curl_setopt ($ handle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);

  2. добавить IPv6-адрес в список разрешенных

  3. Отключите ipv6 для сервера

Пришлось быть внимательнее и помнить про ipv6 :-)

person Scarecrow    schedule 07.02.2015

Мне сказали, что это можно исправить, просто удалив все IP-адреса из опции IP, разрешенной для редактирования. Это делает его менее безопасным, но после этого он принимает все IP-адреса.

http://i.stack.imgur.com/LSbTL.jpg

person Urasquirrel    schedule 01.05.2015
comment
Извините. Этот «менее безопасный» может повредить мой кошелек :-) - person Scarecrow; 20.11.2015
comment
Хотя правильный ответ, не рекомендуется ... Я бы не проголосовал против этого ... Но я бы тоже не проголосовал за него. - person Angry 84; 28.02.2017