使用服务帐户验证 Google InAppPurchase

我想验证在我的安卓应用中制作的。inAppPurchase

  1. 我在 Google API 控制台中创建了一个新的服务帐户。

    一个。服务帐户列在权限下,并具有“可以查看”权限

  2. 我使用的是最新版本的 https://github.com/google/google-api-php-client

  3. 来自我的PHP脚本的代码片段:

    $client = new Google_Client();
    $client->setApplicationName('myAppName' );
    $client->setClientId('123456789123-vxoasdt8qwe6awerc9ysdfmjysdfysf64werweria8fh.apps.googleusercontent.com');
    $key = file_get_contents('/shr/data/stor/b516cexx3123asdf3988345d8133e7f86bfas2553-privatekey.p12');
    $service_account_name = '123456789123-vxoasdt8qwe6awerc9ysdfmjysdfysf64werweria8fh@developer.gserviceaccount.com';
    
    $client->setScopes(array('https://www.googleapis.com/auth/androidpublisher') );
    $cred = new Google_Auth_AssertionCredentials( $service_account_name, array('https://www.googleapis.com/auth/androidpublisher'), $key );
    $client->setAssertionCredentials($cred);
    
    try {
        $service = new Google_Service_AndroidPublisher( $client );
        $googleApiResult = $service->inapppurchases->get($externalAppId, $externalProductId, $purchaseToken);
    } catch (Exception $e) {
        var_dump( $e->getMessage() );
    }
    
  4. 来自谷歌的回应:

    GET https://www.googleapis.com/androidpublisher/v1.1/applications/de.test.myapp/inapp/de.test.inapp.google.balance5eur/purchases/[购买令牌]: (401) 当前用户没有足够的权限来执行所请求的操作。

    [购买令牌]是我从谷歌收到的购买令牌

  5. 设置到我的邮件地址显示$cred->sub = 'foo@bar.de'

    刷新 OAuth2 令牌时出错,消息:“{ ”错误“:”unauthorized_client“、”error_description“:”请求中未经授权的客户端或作用域”。


答案 1

必须将 API 与应用连接。您必须转到Google Play发布页面(https://play.google.com/apps/publish),并在“设置->用户帐户和权限->邀请新用户”中使用服务帐户电子邮件邀请用户,并授予其“查看财务报告”权限。

这意味着,虽然您通常可能会在Google Play控制台中看到您网域中的许多用户(电子邮件:,角色:财务;电子邮件:、角色:管理员),您现在将添加其他用户并授予他财务角色(电子邮件:、角色:财务)。user1@mydomain.exampleuser2@mydomain.exampleXXX@developer.gserviceaccount.com


答案 2

推荐