Api ключ php пример

How to Generate Unique and Secure API keys with PHP

The string used for an API key or token should be unique and secure. PHP random_bytes() function generates pseudo-random bytes that are cryptographically secure. Use random_bytes() and bin2hex() function to generate unique and strong API keys in PHP.

The following code snippet helps you to create a random and secure string with PHP which is useful for API key/token.

$key = bin2hex(random_bytes(32));

The above code will output 64 characters long string.

d7a03fee5546592a37e22ff8f45bbbe45da4632dfed9a774e085d0e8b5d3fa73

Use hash_equals() function to compare key strings.

if(hash_equals($api_token, $key)) < 
echo
'Valid';
>else <
echo
'Invalid';
>

Источник

Пример использования Google Indexing API на PHP

В этой статье приведена подробная инструкция по использованию Google Indexing API и выполнению запросов на индексирование страниц через PHP. Indexing API — это очень простой способ для информирования Google об изменениях у вас на сайте.

Шаг 1. Проверьте наличие ресурса в Google Search Console

На этом шаге необходимо проверить наличие ресурса в Google Search Console. Если он уже у вас добавлен в консоль, то этот шаг можно пропустить.

1. Перейдите на страницу https://search.google.com/search-console/welcome и войдите, используя свою учетную запись Google.

Читайте также:  Функция filter python пример

2. Откройте меню в левом верхнем углу и нажмите «Добавить ресурс».

Добавление ресурса в Google Search Console

3. Если у вас нет доступа к вашим DNS-записям или не достаточно опыта, то можно просто использовать опцию «Ресурс с префиксом в URL». Введите URL и нажмите «Продолжить».

4. Выберите метод подтверждения. Самый простой — HTML-файл. Скачайте HTML-файл и загрузите его в корень вашего домена. После этого нажмите кнопку «Подтвердить».

Шаг 2. Создание сервисного аккаунта в Google Cloud Platform

Страница Service accounts в Google Cloud Platform

2. Выберите проект (если он не создан, его необходимо создать) и нажмите на «Create service account (создать сервисный аккаунт)».

Создание сервисного аккаунта в Google Cloud Platform

3. Заполните данные учетной записи.

Данные учетной записи сервисного аккаунта в Google Cloud Platform

Шаг 3. Создание ключа для аутентификации Google API

Теперь создадим закрытый ключ в формате JSON. Ключ будем использовать в PHP для доступа к API Google.

1. Нажмите на адрес электронной почты сервисного аккаунта.

Созданные сервисные аккаунты для itchief в Google Cloud Platform

2. Выберите «Keys (ключи)» -> «Add key (Добавить ключ)» -> «Create new key (Создать новый ключ)».

Созданные нового ключа для доступа к API Google

3. Выберите JSON и нажмите «Create (Создать)». Созданный ключ будет загружен вам на компьютер.

Шаг 4. Добавление сервисного аккаунта в качестве владельца сайта

На этом шаге нужно добавить учетную запись службы Google в качестве владельца домена в Google Search Console. После этого эта учетная запись получит доступ к свойствам вашего домена через Google API.

2. Перейдите в «Настройки» (при необходимости выберите нужный ресурс).

Настройки в Google Search Console

3. Выберите пункт «Пользователи и разрешения».

4. Нажмите на кнопку «Добавить пользователя». Теперь вставьте адрес электронной почты учетной записи сервисного аккаунта.

Настройки в Google Search Console

Шаг 5. Установка клиентской библиотеки для Google API

Для обращения к Indexing API нам потребуются клиентские библиотеки Google API (ссылка на страницу GitHub и полную документацию: https://github.com/googleapis/google-api-php-client).

Установить библиотеки можно с помощью Composer или вручную.

Для загрузки с помощью Composer достаточно открыть консоль и написать в ней команду:

composer require google/apiclient

Самостоятельно скачать архив последней версии библиотеки для нужной версии PHP можно с GitHub на странице Releases · googleapis/google-api-php-client. После загрузки архива на компьютер, разархивируйте его содержимое в папку вашего проекта.

Подключение библиотеки в свой проект выполняется посредством:

require_once '/path/to/vendor/autoload.php';

Шаг 6. Примеры кода

Структура файлов примера для работы с Google Indexing API

  • каталог vendor содержит библиотеки Google API, которые были установлены с помощью Composer;
  • composer.json – файл, который был автоматически создан Composer и содержит список установленных с помощью этого инструмента библиотек;
  • api-project-696409.json – файл, содержащий секретный ключ, который мы создали и скачали на 3 шаге;
  • index.html – HTML страница, на которую поместим для указания URL, кнопки для выполнения различных действий и для вывода ответа Indexing API;
  • main.js — JavaScript сценарий для отправки AJAX запроса на сервер;
  • indexing.php — серверный php-сценарий для отправки запроса в Google Indexing API.

В HTML создадим страницу со следующим содержимым (оформление выполним на Bootstrap 5):

  

Результат:

.

Форма для работы Google Indexing API

  • элемент предназначен для указания URL-адреса;
  • кнопка с id=»get-status» применяется для получения статуса уведомления (т.е. показывает ответ, когда сервер Google в последний раз получал запрос для указанного URL);
  • кнопка с id=»update» предназначена для обновления URL (отправляет запрос на индексацию, т.е. когда это новый URL и его нужно просканировать, либо когда в нём произошло изменение контента);
  • кнопка с id=»delete» используется для отправки запроса на удаление URL из индекса;
  • элемент применяется для вывода тела ответа на запрос Indexing API.

Отправку запроса на сервер будем выполнять через AJAX с использованием fetch() и async/await:

// асинхронная функция для отправки запроса на сервере и вывода от него ответа в #result const getURLStatus = async(url, action = 'get') => { try { const data = new FormData(); data.append('url', url); data.append('action', action); let response = await fetch('/php/indexing.php', { method: 'post', body: data }); document.querySelector('#result').innerHTML = ''; document.querySelector('#url').classList.remove('is-invalid'); document.querySelector('.invalid-feedback').textContent = ''; if (response.ok) { let result = await response.json(); if (result['result'] === 'error') { const error = result['error']; document.querySelector('#url').classList.add('is-invalid'); document.querySelector('.invalid-feedback').textContent = error; } else { document.querySelector('#result').innerHTML = `
${result.body}

`; } } } catch (error) { document.querySelector('#result').innerHTML = error; } } // при нажатии на кнопку #get-status document.querySelector('#get-status').onclick = () =< { getURLStatus(document.querySelector('#url').value); } // при нажатии на кнопку #update document.querySelector('#update').onclick = () =< { getURLStatus(document.querySelector('#url').value, 'update'); } // при нажатии на кнопку #delete document.querySelector('#delete').onclick = () =< { getURLStatus(document.querySelector('#url').value, 'delete'); }

Серверный сценарий на PHP:

 'success' ]; $url = $_POST['url']; $action = $_POST['action']; $type = $action == 'update' ? 'URL_UPDATED' : 'URL_DELETED'; if (!filter_var($url, FILTER_VALIDATE_URL)) { $data['result'] = 'error'; $data['error'] = 'URL не является корректным.'; echo json_encode($data); exit(); } $client = new Google_Client(); // file-containing-secret-key.json - секретный ключ для доступа к API Google $client->setAuthConfig('file-containing-secret-key.json'); $client->addScope('https://www.googleapis.com/auth/indexing'); $httpClient = $client->authorize(); $endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish'; if ($action == 'get') { $response = $httpClient->get('https://indexing.googleapis.com/v3/urlNotifications/metadata?url=' . urlencode($url)); } else { $content = json_encode([ 'url' => $url, 'type' => $type ]); $response = $httpClient->post($endpoint, ['body' => $content]); } $data['body'] = (string) $response->getBody(); echo json_encode($data);

Пример создания запроса на получение статуса уведомления для указанного URL:

Отправка запроса на обновление URL через Google Indexing API

Пример создания запроса на обновление URL:

Отправка запроса на обновление URL через Google Indexing API

Доступ к странице, ключу и серверному сценарию должен быть предоставлен только администраторам. Кроме того, когда вы работаете и тестируете, вы можете использовать только те домены, которые вы связали со своей учетной записью службы Google. Если вы попытаетесь использовать домены, которые не подтвердили и не связали со своей учетной записью службы Google, то получите ошибки.

Источник

Оцените статью