我正在使用Firebase和react-router构建一个create-react-app。 我想将Stripe整合为支付服务提供商。
作为条纹验证流程的一部分,我需要提供用户的IP地址,同意条款和条件,根据Stipe docs:
stripe.accounts.update(
{CONNECTED_STRIPE_ACCOUNT_ID},
{
tos_acceptance: {
date: Math.floor(Date.now() / 1000),
ip: request.connection.remoteAddress // Assumes you're not using a proxy
}
}
});
因为我使用的是Firebase和react-router的组合,我似乎不能使用Express(req,res)来获取后端的IP:我不认为我可以链接获得的IP地址给用户uid。 此外,当尝试在客户端上使用这个世界的ipify做出反应时,我总是在生产中使用相同的IP(无论设备或位置):
import http from 'http';
componentDidMount () {
http.get({'host': 'api.ipify.org', 'port': 80, 'path': '/'}, function(resp) {
resp.on('data', ip => {
alert("My public IP address is: " + ip);
});
});
}
知道如何通过Firebase云功能或直接从客户端检索用户的IP地址吗?
由于
答案 0 :(得分:2)
您可以使用Firebase云功能检索客户端IP地址。 HTTP触发云功能与Node / Express应用程序类似,它们通过响应和请求参数触发。
示例强>
exports.someFunctionName = functions.https.onRequest((req, res) => {
// ...
});
考虑到这一点,您可以在此功能中实现Stripe逻辑。
exports.someFunctionName = functions.https.onRequest((request, response) = > {
// ...
stripe.accounts.update({
CONNECTED_STRIPE_ACCOUNT_ID
}, {
tos_acceptance: {
date: Math.floor(Date.now() / 1000),
ip: request.ip // Assumes you're not using a proxy
}
}
});
});
有关如何更好地检索IP地址的更多详细信息,请查看this answer。