我在最后几天尝试了很多事情,但现在我没有想法:(
我想验证在我的Android应用中制作的inAppPurchase。
1)我在google API控制台中创建了一个新的服务帐户。
1a)服务帐户列出了非权限,并且可以查看"许可
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的回复:
获取https://www.googleapis.com/androidpublisher/v1.1/applications/de.test.myapp/inapp/de.test.inapp.google.balance5eur/purchases/[PURCHASETOKEN]: (401)当前用户没有足够的权限来执行 要求的操作。
[PURCHASETOKEN]是我从Google收到的购买代币
5)设置$ cred-> sub =' foo@bar.de'到我的邮件地址显示
刷新OAuth2令牌时出错,消息:' {"错误" : " unauthorized_client"," error_description" :"未经授权的客户或 请求中的范围。" }'
答案 0 :(得分:36)
好的,我找到了解决方案!
您必须将API与您的应用相关联。您必须转到Google Play发布页面(https://play.google.com/apps/publish),然后在“设置” - >“用户帐户”和“用户帐户”中邀请具有服务帐户电子邮件的用户。 rights->邀请新用户并授予其“查看财务报告”的权限。
这意味着,您通常可能会在Google Play控制台中看到您域中的许多用户(电子邮件:user1@mydomain.com,角色:财务;电子邮件:user2 @mydomain.com,角色:管理员) ,您现在将添加另一个用户并给他一个财务角色(电子邮件:XXX@developer.gserviceaccount.com,角色:财务)。
谢谢对我有用,祝你好运!