Unreal Engine开发安卓应用如何获取Google API的JSON数据
Unreal Engine 调用Google Play内购购买信息查询接口方案
你要找的purchases.products查询接口固定请求规则如下,不需要零散翻找文档:
- 接口请求方法为
GET,请求路径格式:https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{应用包名}/purchases/products/{内购SKU}/tokens/{purchaseToken}
三个路径参数必须替换为实际业务值:{应用包名}:你在Google Play后台登记的安卓应用完整包名{内购SKU}:你在Play后台配置的对应内购商品ID{purchaseToken}:用户完成内购流程时,Billing客户端回调里返回的购买凭证令牌,该值只能从客户端内购回调获取,无法自行生成
调用前置配置(缺任何一步都会调用失败)
- 先到Google Cloud控制台关联你的Google Play开发者账号,为对应服务账号开通Android Publisher API的访问权限
- 接口需要OAuth2.0鉴权,不能直接从客户端发起无鉴权请求:调用时必须在请求头添加
Authorization: Bearer {服务账号生成的有效access_token},access_token有效期默认1小时,过期需重新生成 - 安全提示:不要把服务账号凭证打包进客户端,所有接口调用逻辑请放在你的自有服务端完成,客户端仅需把内购拿到的purchaseToken传给服务端,由服务端发起查询、校验请求,避免凭证泄露造成资损
UE侧实现参考
如果是在UE的服务端逻辑/专用服务器里调用,直接用UE自带的HTTP模块发请求即可,核心代码片段:
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> CheckRequest = FHttpModule::Get().CreateRequest(); CheckRequest->SetURL(FString::Printf( TEXT("https://androidpublisher.googleapis.com/androidpublisher/v3/applications/%s/purchases/products/%s/tokens/%s"), *AppPackageName, *ProductSku, *PurchaseToken )); CheckRequest->SetVerb(TEXT("GET")); CheckRequest->SetHeader(TEXT("Authorization"), FString::Printf(TEXT("Bearer %s"), *ValidAccessToken)); CheckRequest->OnProcessRequestComplete().BindLambda([](FHttpRequestPtr Req, FHttpResponsePtr Resp, bool bReqSuccess) { if (bReqSuccess && Resp.IsValid() && Resp->GetResponseCode() == 200) { // Resp->GetContentAsString() 就是接口返回的JSON格式数据 FString ResultJson = Resp->GetContentAsString(); } }); CheckRequest->ProcessRequest();
常见踩坑排查
- 返回404:优先检查路径参数顺序是否正确,很多人会把SKU和purchaseToken的位置写反
- 返回403:先检查对应服务账号是否在Google Play后台被授予了「查看应用财务信息」的权限,仅开通Cloud侧API权限没有Play后台权限会被拦截
- 返回400:检查传入的purchaseToken是否和当前应用环境匹配,测试渠道生成的测试购买token不能在正式环境接口查询,反之亦然
内容的提问来源于stack exchange,提问作者Kujo
相关产品推荐
相关产品推荐

