401 Недействительные учетные данные при попытке доступа к API консоли поиска Google в PHP - PullRequest
1 голос
/ 30 апреля 2019

Я пытаюсь настроить API консоли поиска Google в Laravel и пытаюсь заставить его работать с моими вновь созданными учетными данными.Я установил ключ API в консоли и вставил его в свой код, однако при попытке извлечь данные приложение возвращает 401 Invalid credentials.Я чувствую себя действительно глупо из-за того, что не могу заставить это работать, так как я предположил бы, что копирование ключа API и вставка его в мой код сделают эту работу.Какой ключ требуется для проверки подлинности и получения данных из API консоли поиска?

Я попытался настроить новый ключ API и использовать этот ключ в поле setAccessToken.Я даже пытался настроить Oauth 2.0 и использовать эти учетные данные для аутентификации.Кажется, что программа вылетает при 'setAccessToken'.Единственный другой ключ, который я применил, - это ключ разработчика ($client->setDeveloperKey())

<code>public static function debugSiteData() {
        // Dates (YYYY-mm-DD)
        $fromDate = date('Y-m-d', strtotime('-3 months'));
        $toDate = date('Y-m-d', strtotime('-1 day'));

        $client = new Google_Client();
        $client->setApplicationName("application_name");
        $client->setDeveloperKey('AIza(...)');
        $client->addScope(Google_Service_Webmasters::WEBMASTERS_READONLY);
        $webmaster = new Google_Service_Webmasters($client);

        $searchConsole = new SearchConsoleClient($client);
        $searchConsole->setAccessToken("ACCESS TOKEN"); 
        // $debugData = var_export($searchConsole);

        $search = new \Google_Service_Webmasters_SearchAnalyticsQueryRequest();
        $search->setStartDate($fromDate);
        $search->setEndDate($toDate);

        $console = $webmaster->urlcrawlerrorscounts->query('http://www.website.com/', array())->getCountPerTypes();

        return '<pre>' . $console . '
';}

При использовании описанного выше метода я получаю ошибку 401 Invalid credentials.Я чувствую, что это что-то действительно простое, но я не могу понять это на данный момент.

1 Ответ

0 голосов
/ 30 апреля 2019

Использование Oauth - хорошая идея для запуска API Google, в вашем случае вам нужно сохранить учетные данные в вашей БД после обратного вызова Oauth, access_token, refresh_token, expires_in, затем вам нужно использовать эти учетные данныеиспользовать API Google

$client = new Google_Client();

// Set Client Id (From Google Cloud Console)
$client->setClientId($client_id);

// Set Client Secret (From Google Cloud Console)
$client->setClientSecret($client_secret);

// Set Access Token With Oauth credentials (form DB)
$client->setAccessToken([
      'access_token'  => $token, 
      'refresh_token' => $refresh_token,
      'expires_in'    => $expires_in
]);

// Check if the access token is expired

if ($client->isAccessTokenExpired()) {
    // This will refresh the token automatically
    $token = $client->refreshToken(null);
    $this->setAccessToken($token);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...