使用服务帐户validationGoogle InAppPurchase

我已经在过去的日子里尝试了很多东西,但现在我不知道

我想validation一个inAppPurchase已经在我的Android应用程序。

1)我在谷歌API控制台中创build了一个新的服务帐户。

1a)服务帐户被列出unter权限并具有“可查看”权限

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)Google的回应:

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

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

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

刷新OAuth2令牌时出错,消息:“{”error“:”unauthorized_client“,”error_description“:”请求中未经授权的客户端或范围。 }”

Solutions Collecting From Web of "使用服务帐户validationGoogle InAppPurchase"

好的,我find了解决scheme!

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

这意味着,您通常可能会看到Google Play控制台(Email:user1@mydomain.com,Role:Finance; Email:user2@mydomain.com,Role:Administrator)中列出的来自您的域的多个用户现在添加另一个用户并给他一个财务angular色(电子邮件:XXX@developer.gserviceaccount.com,angular色:财务)。

谢谢你,祝你好运!

我认为你必须使用OAuth 2.0networking客户端。