.NETユーザー:この回答が誰かの悲しみを大幅に軽減することを願っています。
@Christophe Fondacciが2015年に述べたように、受け入れられたソリューションは数年前にうまく機能しました。
今では2017年 2020年とプロセスははるかに簡単で高速です。
私のユースケースは、アプリ内サブスクリプションを検証することです。ここで、モバイルアプリはサブスクリプション購入情報をRESTfulサーバーに送信し、RESTfulサーバーはGoogleに連絡してサブスクリプション購入を検証します。
戦略は、あなたに代わって機能するサービスアカウントを作成することです。
Google Play Dev Consoleにサインインし、設定しているアプリをクリックします。
[設定] ->[ APIアクセス]にアクセスします
[サービスアカウント]で、[サービスアカウントの作成]ボタンをクリックします。
2017年1月の時点で、サービスアカウントの設定方法を示すダイアログが表示されます。ダイアログが表示され、GoogleAPIコンソールが表示されます。そこから、
A)[サービスアカウントの作成]をクリックします
B)意味のあるサービスアカウント名を作成します。Android Publisher Servicesにアクセスすることに興味があるので、「publisher」を選択しました。
C)役割については、何かを選択するだけです。これは後で変更できます。
D)「新しい秘密鍵の提供」を選択し、.Net実装の場合はP12を選択します。このファイルをなくさないでください!
これで#4が完了し、新しいサービスアカウントが一覧表示されます。[アクセスを許可]をクリックして有効にします。
「権限の表示」へのリンクをタップします。ニーズとAPIに基づいて権限を変更する必要があります。
アプリ内購入を検証するには、[歯車]-> [権限の変更]にアクセスし、グローバルな[表示]および[注文の管理]権限を有効にします。
この時点で、Google側ですべてを構成しました。次に、サーバーをサーバーにセットアップします。.Netコンソールアプリを作成して実装をテストし、必要に応じてオフロードすることをお勧めします。
- NugetからAndroidパブリッシャークライアントライブラリを追加します[1]
PM> Install-Package Google.Apis.AndroidPublisher.v3
P12ファイルをプロジェクトルートに追加します
「ビルドアクション」が「コンテンツ」になり、「出力ディレクトリにコピー」が「新しい場合はコピー」になるように、P12プロパティを変更します。
このようなものを実装して、アクセスをテストし、微調整します[1]。
using System.Threading.Tasks;
using System.Security.Cryptography.X509Certificates;
using Google.Apis.Services;
using Google.Apis.Auth.OAuth2;
using Google.Apis.AndroidPublisher.v3;
...
public Task<SubscriptionPurchase> GetSubscriptionPurchase(string packageName, string productId, string purchaseToken)
{
var certificate = new X509Certificate2(
"{{your p12 file name}}",
"{{ your p12 secret }}",
X509KeyStorageFlags.Exportable
);
var credentials = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer("{{ your service account email }}")
{
Scopes = new[] { AndroidPublisherService.Scope.Androidpublisher }
}.FromCertificate(certificate));
var service = new AndroidPublisherService(new BaseClientService.Initializer()
{
HttpClientInitializer = credentials,
ApplicationName = "my server app name",
});
return service.Purchases.Subscriptions.Get(packageName, productId, purchaseToken).ExecuteAsync();
}
頑張ってください、これが誰かを助けることを願っています。
出典:
サーバー間アプリケーションでのOAuth2.0の使用
.Net Client Library for Google.Apis.AndroidPublisher.v3 [1]
1 2020年4月11日
更新-Google.Apis.AndroidPublisher.v2EOLを実行し、Google.Apis.AndroidPublisher.v3を使用します。