0

Google検索コンソールAPIクライアント(PHP)に奇妙な問題があります。昨晩は(最終的には)動作していましたが、今朝はまったく同じコードが動作しなくなりました。検索アナリティクスのデータを取得する代わりに、「Invalid Credentials」という401エラーが表示されます。Google検索コンソールAPI(PHP) - 1日後に翌日許可する「無効な認証情報」エラー

編集:setSubjectはその昨夜なしで作業していたのでコメントアウトしました。私は今日コメントしてコメントをつけてコメントを外していますが、どちらもうまくいきませんでした。

編集2:私はこれを修正したと思った。スコープを変更して、Search Console APIの両方のスコープがあるようにしました。データのダウンロードが再開されました。その後、1〜2時間後に再び「無効な資格情報」エラーが返され始めました。私は$スコープ配列内のスコープの位置を入れ替えて、再び動作を開始しました。どこかに何か問題があるようです。

$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

関連する問題