Android Gaxios._请求处的值无效(/srv/node_modules/googleapis common/node_modules/Gaxios/build/src/Gaxios.js:89:23)

Android Gaxios._请求处的值无效(/srv/node_modules/googleapis common/node_modules/Gaxios/build/src/Gaxios.js:89:23),android,node.js,google-cloud-functions,in-app-purchase,Android,Node.js,Google Cloud Functions,In App Purchase,我试图向谷歌提出请求,以验证我购买的IAP,但我一直收到错误 Invalid Value at Gaxios._request (/srv/node_modules/googleapis-common/node_modules/gaxios/build/src/gaxios.js:89:23) 我记录了这些值,它们似乎是正确的值。购买本身在我的应用程序中运行,只是我无法在服务器上验证它。如何查看无效值是什么 async function verifySubscriptionAndroid(pu

我试图向谷歌提出请求,以验证我购买的IAP,但我一直收到错误

Invalid Value at Gaxios._request (/srv/node_modules/googleapis-common/node_modules/gaxios/build/src/gaxios.js:89:23)
我记录了这些值,它们似乎是正确的值。购买本身在我的应用程序中运行,只是我无法在服务器上验证它。如何查看无效值是什么

async function verifySubscriptionAndroid(purchase: InAppPurchaseModel): Promise<boolean> {
    let status;
    console.log(packageName); //com.company.my_app_name but then it is my actual app name in that format
    console.log(purchase.id); //7162541432 which is the id I provided to the subscription in the google play console
    console.log(purchase.token); //fdlidklhmmfggackclaedklj.AO-J1Ozu3HBDHN3BqTconVT8pMfvVIi_Iw9nIaY6t5Datphb62ehBJuHwFYXKmAw2VZafChN1fmrbY6_6bdh_-Fzq0Is3-e3u829-ckImdMT9gijDVCkC4mL1kWxqtJ5pWHVNbAIzGz_

    try {
        await authClient.authorize();
        const subscription = await playDeveloperApiClient.purchases.subscriptions.get({
            packageName: packageName, 
            subscriptionId: purchase.id,
            token: purchase.token
        });
        status = subscription.status;
    } catch (error) {
        console.log(error)
    }
    return status === 200;
};
我正在使用GoogleAuthAPI

import { google } from 'googleapis';
import * as key from './keys/service_account_key.json';

const authClient = new google.auth.JWT({
    email: key.client_email,
    key: key.private_key,
    scopes: ["https://www.googleapis.com/auth/androidpublisher"]
});

const playDeveloperApiClient = google.androidpublisher({
    version: 'v3',
    auth: authClient
});
我有一个服务帐户设置

它正在向以下url发出请求

https://www.googleapis.com/androidpublisher/v3/applications/com.company.my_app_name/purchases/products/7162541432/tokens/fdlidklhmmfggackclaedklj.AO-J1Ozu3HBDHN3BqTconVT8pMfvVIi_Iw9nIaY6t5Datphb62ehBJuHwFYXKmAw2VZafChN1fmrbY6_6bdh_-Fzq0Is3-e3u829-ckImdMT9gijDVCkC4mL1kWxqtJ5pWHVNbAIzGz_
注意:我在问题中更改了packagename、sku_id和token,但它们已签出

我看着

并尝试将authclient直接注入到对象中,如

const response = await playDeveloperApiClient.purchases.subscriptions.get({
    auth: authClient,
    packageName: packageName,
    subscriptionId: receipt.productId,
    token: receipt.verificationData
});

也许您想尝试如下方式初始化Google API:

const playDeveloperApiClient = google.androidpublisher('v3');
并将
auth
添加到:

const subscription = await playDeveloperApiClient.purchases.subscriptions.get({
                auth: authClient,
                packageName: packageName, 
                subscriptionId: purchase.id,
                token: purchase.token
            });
对于
purchase.id
我觉得奇怪的是,您使用了一个数字作为id,理想情况下,您应该像我在评论中提到的那样放置一个字符串,以防万一,它应该是游戏控制台订阅部分中的产品id,如下图所示:

我不熟悉
async/await
,但将您的代码与我的代码进行比较似乎您缺少
const subscription
中的
authClient
。您的
purchase.id
也是一个数字吗?理想情况下应该是月刊、年刊或易于阅读的内容。控制台中“订阅”部分的第二列。我使用的是字符串。我为模型添加了代码。该字符串与开发人员控制台中的productId匹配。我还尝试在对象中注入authclient,但这也没有效果。也许您想针对订阅的web API尝试数据,只需在右侧面板中填充适当的数据即可。
const subscription = await playDeveloperApiClient.purchases.subscriptions.get({
                auth: authClient,
                packageName: packageName, 
                subscriptionId: purchase.id,
                token: purchase.token
            });