facebook twitter hatena line email

「Php/GooglePlayApi」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(GooglePlayの売上APIにアクセスするphp)
("エラー: does not have storage.objects.get access"とでたら)
行53: 行53:
 
==="エラー: Invalid bucket name: "とでたら===
 
==="エラー: Invalid bucket name: "とでたら===
 
index.phpの$bucketNameに設定した値が、間違えてるので、pubsite_prod_[数字]な感じになってるか、確認する。
 
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" エラーと出るとき===
 
==="Google Play Android Developer API has not been used in project" エラーと出るとき===
 
#GoogleCloudPlatformの"APIとサービス"を選択
 
#GoogleCloudPlatformの"APIとサービス"を選択
 
#ライブラリを選択し、"Google Play Android Developer API"で検索し、でてきたものを有効にする
 
#ライブラリを選択し、"Google Play Android Developer API"で検索し、でてきたものを有効にする

2025年3月21日 (金) 18:28時点における版

準備

gcpでサービスアカウントを作成し鍵を作る

  1. GoogleCloudPlatform(https://console.cloud.google.com/ )で、IAMと管理 / サービスアカントを開く
  2. 上にある"サービスアカウントを作成する"を選択
  3. サービスアカウント名に、わかりやすく例えば"purchase"などといれて、apiを作る。(例:purchase@appname1.iam.gserviceaccount.com)
  4. 上のタブから鍵を選択し、"キーを追加"から"新しい鍵"を選択してJSONを選択
  5. サービスアカウントJSONファイルが、DLされるので、保存しておく

PlayConsoleにサービスアカウントの権限を追加

  1. PlayConsole( https://play.google.com/console/developers )のユーザーと権限を開く
  2. "新しいユーザを招待"を選択して、上の項目で作った、サービスアカウント(例:purchase@appname1.iam.gserviceaccount.com)を追加する
  3. 権限の項目のアプリ追加を選択し、売上を見たいアプリを選択する
  4. その歳、"アプリ情報の閲覧(読み取り専用)"、"売上データの表示"、"注文と定期購入"の管理の3つにチェックを付ける

GooglePlayの売上APIにアクセスするphp

  1. 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_[数字]な感じになってるか、確認する。

"Google Play Android Developer API has not been used in project" エラーと出るとき

  1. GoogleCloudPlatformの"APIとサービス"を選択
  2. ライブラリを選択し、"Google Play Android Developer API"で検索し、でてきたものを有効にする