【发布时间】:2020-07-20 03:42:39
【问题描述】:
在过去 24 小时的研究之后,我发现了一种非常有效的方法来验证应用购买,但没有得到正确的信息。我正在寻找验证产品购买。
我尝试将 js 文件部署到 firebase 云函数,但显示我在 exports.validatePurchases = functions.database 方法中有错误。任何人都可以看看它并修复错误吗?
代码如下:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const {google} = require("googleapis");
const publisher = google.androidpublisher('v2');
const authClient = new google.auth.JWT({
email: '',
key: '',
scopes: ['https://www.googleapis.com/auth/androidpublisher']
});
admin.initializeApp();
exports.validatePurchases = functions.database
.ref('/purchases/{uId}/{orderId}')
.onCreate((event, context) => {
const purchase = event.val();
if (purchase.is_processed === true) {
console.log('Purchase already processed!, exiting');
return null;
}
const orderId = context.params.orderId;
const dbRoot = event.ref.root;
const package_name = purchase.package_name;
const sku = purchase.sku;
const my_token = purchase.token;
authClient.authorize((err, result) => {
if (err) {
console.log(err);
}
publisher.purchases.products.get({
auth: authClient,
packageName: package_name,
productId: sku,
token: my_token
}, (err, response) => {
if (err) {
console.log(err);
}
// Result Status must be equals to 200 so that the purchase is valid
if (response.status === 200) {
return event.ref.child('is_validated').set(true);
} else {
return event.ref.child('is_validated').set(false);
}
});
});
return null;
});
我在部署时遇到的错误:
Functions deploy 出现以下函数错误: 验证购买
要尝试重新部署这些功能,请运行: firebase deploy --only 函数:validatePurchases
要继续部署其他功能(例如数据库),请运行: firebase deploy --except 函数
错误:函数未正确部署。
在 Firebase 功能日志中:
Code in file index.js can't be loaded.
Did you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module 'googleapis'
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/srv/index.js:3:18)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
【问题讨论】:
-
请编辑您的问题以包含您收到的确切错误消息以及您在哪里获得它。一般来说,我建议学习how to create a minimal, complete, verifiable example,因为如果你能隔离问题,它真的很有帮助。
-
@FrankvanPuffelen 我在部署时遇到错误 Export.validatePurchases = functions.database 。
-
我已经更新了我的问题,但没有适当的指导方针来解决这个问题。你能帮我解决这个问题吗? @FrankvanPuffelen
-
你得到什么错误?只需将其复制/粘贴到您的问题中,以便我们准确查看。
-
我添加了错误。 @FrankvanPuffelen
标签: android google-cloud-functions in-app-purchase