145 人が現在オンライン
145 人が現在オンライン
Google AdWords のログイン、MCC、API、Editor、認定資格などについてユーザー同士で意見交換ができます。運用者ならではの質問や回答を投げかけ合って問題を解決していきましょう。
ガイドを表示
star_border
返信

Adwords ApiのGetRefreshToken.phpがエラーになる

[ 編集済み ]
初級者 ✭

下記参照ページのように検索ボリュームの一括取得を行いたいです。

手順のうち2でつまづいています。

 

【状況】

1) MCCアカウント作成

2) developer ConsoleでクライアントID、シークレットを発行

3) ライブラリを取得

4) /googleads-php-lib/examples/Auth/GetRefreshToken.phpを実行

 

 ⇨ エラー

 

【エラー文】

PHP Fatal error:  Class 'Google\Auth\OAuth2' not found in /home/adwords-lib/googleads-php-lib/examples/Auth/GetRefreshToken.php on line 106

/home/adwords-lib以下にライブラリを取得

 

Line21、22にあるuse文が原因のように見受けられるのですが、

どのように対処すればよいでしょうか?

 

【参考ページ】

https://goo.gl/XMqrk2

1. 認証トークンの取得(MCCアカウントから実施)
2. OAuthによる認証
3. ライブラリを利用してAdWordsClientのインスタンスを生成
4. TargetingIdeaServiceを取得
5. 欲しいキーワード情報を含めたセレクターを生成
6. 5で生成したセレクターを使って4で取得したTargetingIdeaServiceに問い合わせる
7. 結果を整形して欲しい形にする

Re: Adwords ApiのGetRefreshToken.phpがエラーになる

レジェンド

自分は最近は、リフレッシュトークンの取得には、APIのプログラムを使わずに、直接URLを生成して、取得することが多いです。

 

参考になるのは、

http://qiita.com/shin1ogawa/items/49a076f62e5f17f18fe5

のページで、

 

https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=$CLIENT_ID&redirect_uri=$R...

のURLから必要事項($CLIENT_ID, $REDIRECT_URI, $SCOPE)を置き換えて実行し、取得したアクセストークンを

 

curl --data "code=$AUTHORIZATION_CODE" --data "client_id=$CLIENT_ID" --data "client_secret=$CLIENT_SECRET" --data "redirect_uri=$REDIRECT_URI" --data "grant_type=authorization_code" --data "access_type=offline" https://www.googleapis.com/oauth2/v4/token

のコマンドに当て込んで実行し、リフレッシュトークンを取得しています。

 

この方法を知ってからは、プログラミング言語や利用するライブラリに影響することがないこともあり、この方法でしか認証を行わなくなってしまいました。

Re: Adwords ApiのGetRefreshToken.phpがエラーになる

初級者 ✭
山田様

ご回答有り難うございます。

無事にリフレッシュトークンが取得できたのでサンプルコードを利用してボリュームの取得に進みました。
GetkeywordIdeas.phpの実行に関して質問です。
(おそらく内容は昨日と同様のものかと思うのですが、、、)

Line:133で「PHP Fatal error: Class 'Google\AdsApi\Common\OAuth2TokenBuilder' not found」となってしまいます。
以下の箇所の修正が必要な気がしているのですが、どのように修正すればよいでしょうか。。。
use Google\AdsApi\Common\OAuth2TokenBuilder;

Re: Adwords ApiのGetRefreshToken.phpがエラーになる

レジェンド

その様子ですと、インストール時の問題のようですね。

 

1) MCCアカウント作成
2) developer ConsoleでクライアントID、シークレットを発行
3) ライブラリを取得
4) /googleads-php-lib/examples/Auth/GetRefreshToken.phpを実行

 

における3〜4のステップを詳しく書いてもらえるとアドバイスしやすいです。


自分のMac環境(PHP & composerは構築済み)で、

 

$ mkdir adwordsapi-test && cd adwordsapi-test # 新規のディレクトリで作業
$ composer require googleads/googleads-php-lib $ wget https://raw.githubusercontent.com/googleads/googleads-php-lib/master/examples/Auth/GetRefreshToken.php $ vi GetRefreshToken.php # autoload.phpのパスを修正
$ php GetRefreshToken.php

と実行したところ、問題なく認証フローがスタートしました。

 

Re: Adwords ApiのGetRefreshToken.phpがエラーになる

初級者 ✭
ご返信ありがとうございます。 composerではなくgit cloneしたからですかね。。。
$git clone https://github.com/googleads/googleads-php-lib.git
$vi GetRefreshToken.php # autoload.phpのパスを修正
$ php GetRefreshToken.php
また、以下の手順は行っていません。
$ wget https://raw.githubusercontent.com/googleads/googleads-php-lib/master/examples/Auth/GetRefreshToken.php
記載頂いた内容でやり直してみます。

Re: Adwords ApiのGetRefreshToken.phpがエラーになる

レジェンド
実は自分のメイン言語はPHPではない(メインはRubyです)ので、PHPのライブラリに関する知識は十分ではないので恐縮ですが、git cloneした後にcomposerを使って依存モジュールをvendor以下に取得する必要があるかと思います。

Re: Adwords ApiのGetRefreshToken.phpがエラーになる

初級者 ✭ ✭ ✭

Aqua0925 様

 

お世話になっております。 AdWords API チームと PHP ライブラリを管理しているタネートと申します。
PHP ライブラリは PSR-4 など現在のスタンダードに従うため、最近マイグレーションされました。

 

そこで、インストールするときに、本ライブラリをダウンロードするだけではなく、依存しているライブラリもダウンロードしなければなりません。

そうするために、一番簡単なのは composer を使用することです。

README.md に書いてあるように composer をご利用いただければ、すべて依存しているライブラリもダウンロードしてくれるので便利です。

是非ご利用ください。

 

タネート