尝试从.Net Web API中的Android Publisher服务购买时出错

fci*_*cio 10 google-api oauth-2.0 google-play

我有一个网络Api,需要从Play商店验证购买.根据我在google api文档中读到的内容,我需要有一个服务帐户,并使用其凭据进行身份验证,以便能够执行我想要的操作.我有以下代码:

String serviceAccountEmail = "MYSERVICEACCOUNTEMAIL@developer.gserviceaccount.com";

var certificate = new X509Certificate2(@"C:\privatekey.p12", "notasecret", X509KeyStorageFlags.Exportable);

ServiceAccountCredential credential = new ServiceAccountCredential(
     new ServiceAccountCredential.Initializer(serviceAccountEmail)
           {
               Scopes = new[] { "https://www.googleapis.com/auth/androidpublisher" }
           }.FromCertificate(certificate));

// Create the service.
var service = new AndroidPublisherService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential
        });
var data = service.Purchases.Get("MYPACKAGE", "MYPRODUCT",
            "MYTOKEN")
            .Execute();
Run Code Online (Sandbox Code Playgroud)

它抛出以下异常

Google.Apis.Requests.RequestError
Invalid Value [400]
Errors [
Message[Invalid Value] Location[ - ] Reason[invalid] Domain[global]
]
Run Code Online (Sandbox Code Playgroud)

我不知道可能导致它的原因.我搜索了很多,但我找不到真正有用的东西.任何善意的帮助将非常感激.

Mat*_*ttJ 5

我知道这个问题“有点”旧,但我仍然想尝试回答以澄清。

var data = service.Purchases.Get("MYPACKAGE", "MYPRODUCT",
            "MYTOKEN")
            .Execute();
Run Code Online (Sandbox Code Playgroud)

我的猜测是这部分不完全正确。Purchases 类没有 Get 方法。在此之前,您必须指定(在您的情况下): service.Purchases.Products.Get(...)-> 用于消费品

service.Purchases.Subscriptions.Get(...) -> 订阅

此答案假定您使用的是 V2。希望它可以帮助任何陷入困境的人。