Мне нужно подтвердить свои покупки в Google Play с помощью API PurchaseStatus. Я хочу использовать опцию 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, я использую токен из рабочего процесса веб-сервера.
2) Затем я попытался использовать ServiceAccountCredential + AndroidPublisherService .. поэтому обе библиотеки Google:
// 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) Я пробовал еще несколько вещей, например, попытался передать пользователя инициализатору ... но они не сработали ..
Что я делаю не так?
Как я могу подтвердить покупку Android с помощью ServiceAccount
из ASP .NET?