「Php/GooglePlayApi」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→"Google Play Android Developer API has not been used in project" エラーと出るとき) |
(→GooglePlayの売上APIにアクセスするphp) |
||
行23: | 行23: | ||
$serviceAccountPath = '/path/to/your-service-account.json'; // サービスアカウントJSONのパス | $serviceAccountPath = '/path/to/your-service-account.json'; // サービスアカウントJSONのパス | ||
$packageName = 'com.example.yourapp'; // Google Playのアプリのパッケージ名 | $packageName = 'com.example.yourapp'; // Google Playのアプリのパッケージ名 | ||
− | $ | + | $productId = 'your_product_id'; // 取得したい製品のID(例: 月額サブスクリプションや消耗品のID) |
− | + | ||
− | + | ||
− | + | ||
// Google APIクライアントの初期化 | // Google APIクライアントの初期化 | ||
行33: | 行30: | ||
$client = new Google_Client(); | $client = new Google_Client(); | ||
$client->useApplicationDefaultCredentials(); | $client->useApplicationDefaultCredentials(); | ||
− | $client->addScope( | + | $client->addScope('https://www.googleapis.com/auth/androidpublisher'); |
− | // | + | // Android Publisher APIにアクセス |
− | $ | + | $service = new Google_Service_AndroidPublisher($client); |
try { | try { | ||
− | // | + | // 製品の購入情報を取得 |
− | $ | + | $purchase = $service->purchases_products->get($packageName, $productId, 'your_purchase_token'); |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | // 購入情報を表示 | ||
+ | echo "✅ 購入情報を取得しました:\n"; | ||
+ | print_r($purchase); | ||
+ | |||
+ | } catch (Google_Service_Exception $e) { | ||
+ | echo "❌ Google API エラー: " . $e->getMessage() . "\n"; | ||
+ | echo "詳細: " . $e->getErrors()[0]['message'] . "\n"; | ||
} catch (Exception $e) { | } catch (Exception $e) { | ||
echo "❌ エラー: " . $e->getMessage() . "\n"; | echo "❌ エラー: " . $e->getMessage() . "\n"; |
2025年3月21日 (金) 18:28時点における版
目次
[非表示]準備
gcpでサービスアカウントを作成し鍵を作る
- GoogleCloudPlatform(https://console.cloud.google.com/ )で、IAMと管理 / サービスアカントを開く
- 上にある"サービスアカウントを作成する"を選択
- サービスアカウント名に、わかりやすく例えば"purchase"などといれて、apiを作る。(例:purchase@appname1.iam.gserviceaccount.com)
- 上のタブから鍵を選択し、"キーを追加"から"新しい鍵"を選択してJSONを選択
- サービスアカウントJSONファイルが、DLされるので、保存しておく
PlayConsoleにサービスアカウントの権限を追加
- PlayConsole( https://play.google.com/console/developers )のユーザーと権限を開く
- "新しいユーザを招待"を選択して、上の項目で作った、サービスアカウント(例:purchase@appname1.iam.gserviceaccount.com)を追加する
- 権限の項目のアプリ追加を選択し、売上を見たいアプリを選択する
- その歳、"アプリ情報の閲覧(読み取り専用)"、"売上データの表示"、"注文と定期購入"の管理の3つにチェックを付ける
GooglePlayの売上APIにアクセスするphp
- google/apiclientのライブラリを持つプロジェクトを作成
$ composer require google/apiclient
index.php
<?php require 'vendor/autoload.php'; // ComposerでインストールしたGoogle APIクライアントを読み込む // 設定 $serviceAccountPath = '/path/to/your-service-account.json'; // サービスアカウントJSONのパス $packageName = 'com.example.yourapp'; // Google Playのアプリのパッケージ名 $productId = 'your_product_id'; // 取得したい製品のID(例: 月額サブスクリプションや消耗品のID) // Google APIクライアントの初期化 putenv("GOOGLE_APPLICATION_CREDENTIALS=$serviceAccountPath"); $client = new Google_Client(); $client->useApplicationDefaultCredentials(); $client->addScope('https://www.googleapis.com/auth/androidpublisher'); // Android Publisher APIにアクセス $service = new Google_Service_AndroidPublisher($client); try { // 製品の購入情報を取得 $purchase = $service->purchases_products->get($packageName, $productId, 'your_purchase_token'); // 購入情報を表示 echo "✅ 購入情報を取得しました:\n"; print_r($purchase); } catch (Google_Service_Exception $e) { echo "❌ Google API エラー: " . $e->getMessage() . "\n"; echo "詳細: " . $e->getErrors()[0]['message'] . "\n"; } catch (Exception $e) { echo "❌ エラー: " . $e->getMessage() . "\n"; }
"エラー: Invalid bucket name: "とでたら
index.phpの$bucketNameに設定した値が、間違えてるので、pubsite_prod_[数字]な感じになってるか、確認する。
"エラー: does not have storage.objects.get access"とでたら
エラー詳細
エラー: does not have storage.objects.get access to the Google Cloud Storage object. Permission storage.objects.get denied on resource (or it may not exist).
storage.objects.getの権限があるか確認する
"Google Play Android Developer API has not been used in project" エラーと出るとき
- GoogleCloudPlatformの"APIとサービス"を選択
- ライブラリを選択し、"Google Play Android Developer API"で検索し、でてきたものを有効にする