使用 Node.js 访问 Google Play 开发者 API 的最佳方式是什么?

问题描述 投票:0回答:2

android-publisher
API(用于验证IAP)只有Python和Java客户端包装器。对于 Node.js,似乎唯一的方法是通过 http,但是,我想知道是否有一种方法可以使用 Google API Node.js 客户端来生成 OAuth 服务到服务身份验证的授权令牌并传递它到 http 调用。手动生成 JWT 令牌是一个艰巨且漫长的过程。是否有最佳实践/推荐的方法来以简单的方式做到这一点?

node.js google-api google-cloud-functions google-play
2个回答
9
投票

Eldermao,只需使用 google.auth.GoogleAuth 获取 JWT 客户端即可通过 Google API 进行身份验证。这是谷歌代码的示例:

// Before running the sample:
// - Enable the API at:
//   https://console.developers.google.com/apis/api/androidpublisher.googleapis.com
// - Login into gcloud by running:
//   `$ gcloud auth application-default login`
// - Install the npm module by running:
//   `$ npm install googleapis`

const {google} = require('googleapis');
const androidpublisher = google.androidpublisher('v3');

async function main() {
  const auth = new google.auth.GoogleAuth({
    // Scopes can be specified either as an array or as a single, space-delimited string.
    scopes: ['https://www.googleapis.com/auth/androidpublisher'],
  });

  // Acquire an auth client, and bind it to all future calls
  const authClient = await auth.getClient();
  google.options({auth: authClient});

  // Do the magic
  const res = await androidpublisher.purchases.subscriptions.get({
    // The package name of the application for which this subscription was purchased (for example, 'com.some.thing').
    packageName: 'placeholder-value',
    // The purchased subscription ID (for example, 'monthly001').
    subscriptionId: 'placeholder-value',
    // The token provided to the user's device when the subscription was purchased.
    token: 'placeholder-value',
  });
  console.log(res.data);

  // Example response
  // {
  //   "acknowledgementState": 0,
  //   "autoRenewing": false,
  //   "autoResumeTimeMillis": "my_autoResumeTimeMillis",
  //   "cancelReason": 0,
  //   "cancelSurveyResult": {},
  //   "countryCode": "my_countryCode",
  //   "developerPayload": "my_developerPayload",
  //   "emailAddress": "my_emailAddress",
  //   "expiryTimeMillis": "my_expiryTimeMillis",
  //   "externalAccountId": "my_externalAccountId",
  //   "familyName": "my_familyName",
  //   "givenName": "my_givenName",
  //   "introductoryPriceInfo": {},
  //   "kind": "my_kind",
  //   "linkedPurchaseToken": "my_linkedPurchaseToken",
  //   "obfuscatedExternalAccountId": "my_obfuscatedExternalAccountId",
  //   "obfuscatedExternalProfileId": "my_obfuscatedExternalProfileId",
  //   "orderId": "my_orderId",
  //   "paymentState": 0,
  //   "priceAmountMicros": "my_priceAmountMicros",
  //   "priceChange": {},
  //   "priceCurrencyCode": "my_priceCurrencyCode",
  //   "profileId": "my_profileId",
  //   "profileName": "my_profileName",
  //   "promotionCode": "my_promotionCode",
  //   "promotionType": 0,
  //   "purchaseType": 0,
  //   "startTimeMillis": "my_startTimeMillis",
  //   "userCancellationTimeMillis": "my_userCancellationTimeMillis"
  // }
}

0
投票

这个怎么样:https://www.npmjs.com/package/googleapis? 它是 Google 的官方库。

© www.soinside.com 2019 - 2024. All rights reserved.