您可以使用com.google.api-client
和google-api-services-androidpublisher
庫。
首先去谷歌開發者控制檯上的項目(https://console.developers.google.com)
- 的API &驗證 - >的API
- 啓用 「谷歌Play Android開發者API」
- 轉到證書 - >創建新客戶端ID
- 選擇服務帳戶
- 創建客戶端ID
- 保存P1 2文件保存在某個安全
那麼對於服務帳戶添加剛纔生成的電子郵件地址,你的谷歌遊戲開發者控制檯(https://play.google.com/apps/publish/)
- 設置 - >用戶帳戶&權利 - >邀請新用戶
- 粘貼
@developer.gserviceaccount.com
電子郵件帳戶
- 選擇「查看財務報表」
- 發送邀請
現在的代碼。將以下依賴關係添加到您的pom中。xml文件:
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.18.0-rc</version>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client-jackson2</artifactId>
<version>1.18.0-rc</version>
</dependency>
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-androidpublisher</artifactId>
<version>v1.1-rev25-1.18.0-rc</version>
</dependency>
那麼首先驗證簽名:
byte[] decoded = BASE64DecoderStream.decode(KEY.getBytes());
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(new X509EncodedKeySpec(decoded));
Signature sig = Signature.getInstance("SHA1withRSA");
sig.initVerify(publicKey);
sig.update(signedData.getBytes());
if (sig.verify(BASE64DecoderStream.decode(signature.getBytes())))
{
// Valid
}
如果簽名驗證獲取訂閱詳情:
// fetch signature details from google
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(ACCOUNT_ID)
.setServiceAccountScopes(Collections.singleton("https://www.googleapis.com/auth/androidpublisher"))
.setServiceAccountPrivateKeyFromP12File(new File("key.p12"))
.build();
AndroidPublisher pub = new AndroidPublisher.Builder(httpTransport, jsonFactory, credential)
.setApplicationName(APPLICATION_NAME)
.build();
AndroidPublisher.Purchases.Get get = pub.purchases().get(
APPLICATION_NAME,
PRODUCT_ID,
token);
SubscriptionPurchase subscription = get.execute();
System.out.println(subscription.toPrettyString());
這將產生一個充分利用所有的令牌問題護理JWT令牌,因此您不必親自處理它。
謝謝你這麼多我得到它與你的代碼:) 我不明白的是上面的代碼爲什麼你實現驗證,你的意思是什麼「簽名」和什麼是變量「KEY」應該是? – user3193443