我需要使用PurchaseStatus API验证我的google play购买..我想使用AccountService选项... [我确实使用WebServer工作流程来实现这一点,但这需要手动交互,我不能在生产中使用它]。 对于使用服务帐户,我尝试了两种我能想到的方法:
1)使用Google库+ REST API的代码..
credential = new ServiceAccountCredential( new ServiceAccountCredential.Initializer(serviceAccountEmail)
{ Scopes = new[] { "https://www.googleapis.com/auth/androidpublisher" }
}.FromCertificate(certificate));
var task = credential.RequestAccessTokenAsync(cancellationtoken);
// wait for it ... with error handling..
var accessToken = credential.Token.AccessToken ;
string url = string.Format("https://www.googleapis.com/androidpublisher/v1.1/applications/{0}/inapp/{1}/purchases/{2}?access_token={3}", packageName, sku, purchaseToken , accessToken );
// UseWebRequest agains that URL ...
结果:上述内容因401: Unauthorized
而失败
相同的代码,如果不使用来自ServiceAccountCredential的令牌,我可以使用来自Web Server工作流的令牌。
2)接下来我尝试使用ServiceAccountCredential + AndroidPublisherService ..所以这两个谷歌库:
// Same ServiceAccountCredential as above.. but now I initialize my AndroidPublisherService with the credential in this manner..
AndroidPublisherService svc = new AndroidPublisherService( new Google.Apis.Services.BaseClientService.Initializer()
{ HttpClientInitializer = credential });
var purchaseRequest = svc.Inapppurchases.Get(packageName, sku, token);
var purchase = purchaseRequest.Execute();
结果:我得到了
[Google.GoogleApiException]
{“Google.Apis.Requests.RequestError \ r \ n此开发者帐户没有 拥有应用程序。 [401] \ r \ nErrors [\ r \ n \ tMessage [此开发者 帐户不拥有该应用程序。]位置[ - ] 原因[developerDoesNotOwnApplication] 域[androidpublisher] \ r \ n] \ r \ n“} Google.GoogleApiException
3)我尝试了一些其他的事情,例如尝试将用户传递给初始化程序......但它们无法正常工作..
我做错了什么?
如何使用 ASP .NET 中的ServiceAccount
验证 Android购买?
答案 0 :(得分:1)
请按照此SO文章中的步骤进行操作 - Am I getting the steps right for verifying a user's Android in-app subscription?
在简短的说明中,您需要在Google API控制台上创建应用,并使用客户端ID和客户端密钥。
然后你需要获得一个永不过期的“刷新令牌”,并且可以保存在应用程序中以备将来的所有请求。
刷新令牌后,您需要发出一个帖子请求,该请求将使用该令牌提供“访问令牌”,您可以发送获取请求并验证购买。