0

Google Search Console API 클라이언트 (PHP)에 이상이 있습니다. 지난 밤에 (결국) 작동하고 있었고 오늘 아침에 똑같은 코드가 더 이상 작동하지 않습니다. 검색 애널리틱스 데이터를 가져 오는 대신 '유효하지 않은 자격증 명'이라는 401 오류가 표시됩니다.Google 검색 콘솔 API (PHP) - 다음 날에 다음 날에 권한을 부여합니다. '잘못된 자격증 명'오류가 발생합니다.

편집 : setSubject는 지난 밤에 작업하지 않았기 때문에 주석 처리했습니다. 나는 오늘 주석을 달고 주석을 없앴으며 노력하지도 않았다.

편집 2 : 수정 한 것으로 생각했습니다. Search Console API에 두 가지 유형의 범위가 모두 포함되도록 범위를 변경했습니다. 데이터를 다시 다운로드하기 시작했습니다. 그런 다음 1 ~ 2 시간 후 '잘못된 자격 증명'오류가 다시 표시되기 시작했습니다. 그런 다음 $ scope 배열에있는 범위의 위치를 ​​바꿔서 다시 작업하기 시작했습니다. 어딘가에 뭔가 잘못된 것이있는 것 같습니다.

$result = $google->getSearchAnalytics(); 
var_dump($result); 

나는 401 '잘못된 자격 증명'을 얻을이 컨트롤러를 트리거 경로를 방문

:

namespace App\Services; 

use Illuminate\Support\Facades\Cache; 
use Illuminate\Support\Facades\Config; 

class Google { 

    private function googleApiAuthorise() 
    { 

     $client = new \Google_Client(); 
     putenv('GOOGLE_APPLICATION_CREDENTIALS=/keys/Tool-xxxxxxxxxx.json'); 
     $client->useApplicationDefaultCredentials(); 
     //$client->setSubject('[email protected]'); 
     $scopes = ['https://www.googleapis.com/auth/webmasters.readonly']; 
     $client->setScopes($scopes); 

     if($client->isAccessTokenExpired()) { 

      $client->refreshTokenWithAssertion(); 

     } 

     return $client; 

    } 

    public function getSearchAnalytics() 
    { 

     $client = Google::googleApiAuthorise(); 

     $service = new \Google_Service_Webmasters($client); 

     $request = new \Google_Service_Webmasters_SearchAnalyticsQueryRequest; 

     $request->setStartRow(0); 
     $request->setStartDate('2016-06-01'); 
     $request->setEndDate('2016-10-02'); 
     $request->setSearchType('web'); 
     $request->setRowLimit(100); 
     $request->setDimensions(array('query','country','device','page')); 

     $query_search = $service->searchanalytics->query("http://www.example.com/", $request); 
     $rows = $query_search->getRows(); 

     return $rows; 

    } 
} 

나는 다음 컨트롤러가 :

여기 내 코드입니다. 지난 밤에이 코드를 반복하여 Google의 Search Console API에 대한 결과를 반환하고 싶습니다.

답변

0

이것은 Google 클라이언트 액세스 토큰이 만료 되었기 때문입니다. 인증 토큰은 3600 초 동안 만 작동합니다. 그 후에 만료되며 새로 고침 토큰 (초기 요청에서 보내졌으며 만료되지 않음)을 사용하여 새 토큰을 검색해야합니다. 따라서 문제는 애플리케이션에 국한되지 않고 Google API에 액세스하는 방법에 달려 있습니다.

동일한 상황이지만 아직 적절한 해결책을 찾지 못했습니다. 새로 고침 토큰을 저장하지 않아서 새 서비스 계정을 만들어야하는지 잘 모릅니다. 새 키를 사용해 보았지만 작동하지 않았습니다.

+0

저는 지금 OAuth를 사용하려고 합니다만, 문제도 있습니다. – DL1984