SONICMOOV Googleページ

[PHP]Google APIでadmobのデータを取得していろいろする

[PHP]Google APIでadmobのデータを取得していろいろする

  • このエントリーをはてなブックマークに追加

先日入社したばかりの山田(仮)です。

インターネットの開発をしておりますと、2年に一度くらいGoogle APIを使って、データをむりやりなんとかしたい、という案件が出てくることがございます。

先日admobのデータをごにょごにょすることになったのですが、admobがGoogleに買収されたことによりadsenseのAPI経由でデータを取得するようになっておりました。

同じことではまっていらいらする日本に3人くらいいる方のお役に立てば幸いです。

adsenseとadmobのGoogle APIではまったポイント

大きなはまりポイントは3つです。

  1. admobの古い管理画面からダウンロードできるadmob APIは旧管理画面で設定されたデータにしか使えない
  2. サーバサイド用にkeyファイルを作成できるがadsense APIでは使えない
  3. oauthのコールバック作るのが面倒

1.admobのAPIデータ取得はGoogle adsense API に移行

admobの旧管理画面にあるAPIはトラップですのでスルーしてください。
私、実装したところで気づきましたが、新管理画面のデータはadsense API で取得します。

まあちゃんとドキュメントに書いてあるので、ちゃんと読めよということでした。

https://developers.google.com/mobile-ads-sdk/docs/admob/reporting

2.adsenseのAPIは認証キーファイルで認証できない

https://groups.google.com/forum/#!topic/adsense-api/j-gQsp_fE94

ぐぐってたら、analytics用のサンプルをみつけ、大体同じだろうと思っていたですが
adsenseのAPIはなぜかoauth認証以外許可されていません。

https://developers.google.com/adsense/management/standard_params?hl=ja

3.callback用のファイルをおくのが面倒

通常のwebサイトなどですと、ログイン認証などでcallbackで戻る感じの実装というのは
大変便利なんですが、サーバサイドで完結する場合だと非常にうっとうしいです。

ので、はじめからtokenを作成しておきます。

続きを読む

探すのが大変だった公式マニュアル
https://developers.google.com/adsense/tutorials/oauth-generic?hl=ja

実際の手順

・デベロッパーコンソールでプロジェクト作成

https://console.developers.google.com

英語を読むとじんましんが出る方はaccountからコンソールを日本語化できます。

Google_Developers_Console

・APIと認証>API からadsense APIを許可

Google_Developers_Console2

・APIと認証>認証情報 からweb用のクライアントIDを作ります

デバッグ用のcode.google.comと後述のplaygroundのリダイレクトURIを追加

Google_Developers_Console3

・マニュアルにそってプレイグラウンドからtokenを発行する

https://developers.google.com/adsense/tutorials/oauth-generic?hl=ja

OAuth_2_0_Playground発行されたtokenはjsonごとコピっておく

・php用のclientライブラリを環境にあわせて配置

https://developers.google.com/api-client-library/php/

これで下準備は完了です。

実際のコード

 <?php //class読み込み use Google_Client; use Google_Service_AdSense; use Google_Service_AdSense_Account; use Google_Service_AdSense_AdClients; use Google_Service_Exception; //個別に読み込む場合下記のような感じです require_once 'Google/Client.php'; require_once 'Google/Service/AdSense.php'; require_once 'Google/Service/Exception.php'; try { //developer consoleで発行したid secret $client_id = '123456789012-abcdefghijklmnopqrstuvwxyz.apps.googleusercontent.com'; $client_secret = '12345678901234567890abcd'; //admob管理画面にあるパブリッシャーID $account = 'pub-12345678901234000'; //playgroundではきだしたtoken $access_token ='{ "access_token": "ya29.LgBU-RBh9mXM5xoAAAAEpm16rdOuDjiLYUB2cVOr8RbjOON1UrA9ntxv3cHVUw", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "1/9G1ni0Z-VLjniXBPTb-n2TedD-rlggvX0od11kS1owQ" }'; $client = new Google_Client(); $client->setApplicationName("Google Adsense getter"); $client->setClientId($client_id); $client->setClientSecret($client_secret); $client->setAccessToken($access_token); $service = new Google_Service_AdSense($client); $res = $service->accounts_reports->generate($account,'2014-06-01','2014-06-10',array( 'dimension' => array('DATE','AD_CLIENT_ID','AD_UNIT_CODE',), 'metric' => array('AD_REQUESTS','PAGE_VIEWS','CLICKS','EARNINGS') ) ); if ($res->getTotalMatchedRows()){ foreach ($res['rows'] as $data) { var_dump($data); } } } catch (\Google_Service_Exception $e) { throw new Exception( 'api error ', var_dump($e->getMessage()) ); } 

上記で完了です。

項目などはAPIドキュメントで項目を確認してdimension,metricの部分で指定できます。

https://developers.google.com/adsense/management/v1.4/reference/accounts/reports/generate?hl=ja

クライアントIDの作成過程でdebug用の指定をしていると、この画面で実際のデータを確認できるので便利です。

googleのAPIは便利なんですがドキュメントが読みづらいですね。

  • このエントリーをはてなブックマークに追加

記事作成者の紹介

山田(システムエンジニア)

山田(仮)です。 長年phperです。 アイコンはまだありません。

関連するSONICMOOVのサービス

システムエンジニア募集中!

×

SNSでも情報配信中!ぜひご登録ください。

×

SNSでも
情報配信中!
SONICMOOV Facebookページ SONICMOOV Twitter SONICMOOV Googleページ
システムエンジニア募集中!

新着の記事

mautic is open source marketing automation