- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一款支持 Google Play 应用内购买的 Android 应用。我还有一个在后台运行的服务器应用程序 (JAVA)。每当用户在应用程序中成功购买(购买正常)时,服务器应用程序应向 Google play 发送请求以验证购买。
Google Play 为此提供了 androidpublisher api:developers.google.com/android-publisher/getting_started
问题是 access_token。每当我获得新的 access_token(使用刷新或新 token 请求方法)时,如果我尝试使用 GET 方法从 Google Play 商店(https://developers.google.com/android-publisher/v1/purchases/get)的购买 inapp 项目中询问信息,它就不起作用-> 它总是导致错误 401(无效凭证)或 403(访问未配置)。
经过无数次尝试,我发现我只能使用该链接获得方法:https://developers.google.com/apis-explorer/#p/androidpublisher/v1.1/androidpublisher.inapppurchases.get ,我只能从那里读取 valid access_token ,并且只有使用该 token 我才能让我的服务器应用程序工作但只能运行一个小时,1 小时后我必须再次执行相同的步骤.. .
现在我真的需要一种正确的方法来为我的应用程序获取有效的 access_token
我在互联网上进行了很多研究,但找不到有用的东西。我知道我不是唯一遇到这个问题的人,也许你们中有人知道该怎么做或者已经有过这个问题
最佳答案
您可以使用 com.google.api-client
和 google-api-services-androidpublisher
库。
首先转到谷歌开发者控制台上的项目(https://console.developers.google.com)
然后将刚刚为服务帐户生成的电子邮件地址添加到您的 google play 开发者控制台 (https://play.google.com/apps/publish/)
@developer.gserviceaccount.com
电子邮件帐户现在到代码。将以下依赖项添加到您的 pom.xml 文件中:
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.18.0-rc</version>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client-jackson2</artifactId>
<version>1.18.0-rc</version>
</dependency>
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-androidpublisher</artifactId>
<version>v1.1-rev25-1.18.0-rc</version>
</dependency>
然后先验证签名:
byte[] decoded = BASE64DecoderStream.decode(KEY.getBytes());
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(new X509EncodedKeySpec(decoded));
Signature sig = Signature.getInstance("SHA1withRSA");
sig.initVerify(publicKey);
sig.update(signedData.getBytes());
if (sig.verify(BASE64DecoderStream.decode(signature.getBytes())))
{
// Valid
}
如果签名验证获取订阅细节:
// fetch signature details from google
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(ACCOUNT_ID)
.setServiceAccountScopes(Collections.singleton("https://www.googleapis.com/auth/androidpublisher"))
.setServiceAccountPrivateKeyFromP12File(new File("key.p12"))
.build();
AndroidPublisher pub = new AndroidPublisher.Builder(httpTransport, jsonFactory, credential)
.setApplicationName(APPLICATION_NAME)
.build();
AndroidPublisher.Purchases.Get get = pub.purchases().get(
APPLICATION_NAME,
PRODUCT_ID,
token);
SubscriptionPurchase subscription = get.execute();
System.out.println(subscription.toPrettyString());
这将通过生成 JWT token 来解决所有 token 问题,因此您不必自己处理。
关于java - 谷歌 androidpublish api access_token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21111518/
auth0版本:9.3.3 我正在开发一个使用 Google Identity API 的 Chrome 扩展程序。当我的扩展程序在用户已经获得 Google 授权的情况下加载时,因此通过以下方式再次
我正在尝试确定存储和访问使用 iOS 应用程序的访问 token 的最佳方式。 我正在熟悉核心数据,虽然这已证明对应用程序数据的某些部分有益,但我不确定核心数据是否最适合我需要的 token 。 大多
我正在尝试使用 Facebook 最近发布的新 Graph API,但我似乎无法让它正常工作。 我已经完成了这些步骤,在调用/authorize 之后,我收到了一个 access_token: acc
我刚刚对 Android Firebase 应用程序进行了渗透测试,测试人员在共享首选项中找到了一个文件 com.google.Firebase.auth.api.xml。它包含 access_tok
我正在使用 tymondesigns/jwt-auth在我的 Laravel 应用程序中打包以进行身份验证。我的 AuthController 看起来像这样: middleware('jwt',
如果有人正在寻找如何更改 FOSOAuthServerBundle 的 access_token 生命周期(expires_in),那么这里是如何做到的: fos_oauth_server:
所以,我在设置 IdentityServer4 时遇到了承载身份验证的问题。基本上,我无法调用我的 API 资源并收到 401 错误。当我使用 access_token 添加授权 header 时。我
我在我的应用程序中使用以下代码来检查是否提供了某些 header 。该代码在本地主机中工作正常,但在应用程序部署到服务器时则不然。基本上我想检查请求中是否存在 header 。在服务器上,我不断收到无
我有一个问题,我正在尝试使用从 获取的 token 在页面上发布 https://graph.facebook.com/oauth/access_token? client_id=YOUR_APP_I
一个小问题。目前我正在使用 Spotify Webapi,我想知道是否有一个 Web API 端点来检查 access_token 是否过期?目前我正在使用 GET https://api.spoti
美好的一天。 我正在尝试与 Facebook 集成。所以我需要用户使用 facebook 登录我的网站,然后我需要获取他们的信息,例如好友列表等。 我执行以下操作: @RequestMapping("
我正在为网络应用程序构建 SSO 设置。我可以通过 https://www.googleapis.com/oauth2/v1/userinfo 登录已知用户并创建新的未知用户. 我收到这样的回复: {
我遇到了以下问题: 我正在尝试将 Instagram 应用到我的网站中。但是,我停留在需要获取访问 token 的步骤上。 api 的文档说我需要像这样请求它: curl \-F 'client_id
我正在开发一个移动网络应用程序,它将访问 Google Books API 并允许用户将书籍添加到他们的“收藏夹”书架。这是我第一次使用需要谷歌授权的 API。 我需要发送授权请求来修改私有(priv
我在尝试为用户获取访问 token 时遇到此错误。这与 facebook 应用程序的授权过程有关。产生该异常的代码如下: OAuthClientRequest oAuthRequest = OAuth
我正在使用 Facebook 长期 token (2 个月),但 FB 开始变得不确定,有时会给我这个返回 { "error": { "message": "Cannot acces
在论坛/网络上搜索了几天之后,我仍然无法解决这个问题并使用 SCORE graph api { "error": { "message": "(#15) This method must be
我正在为一个事件建立一个小网站。这个想法是将 Facebook 事件的参加者添加到此网站。问题是主服务需要access_token。我不想让用户登录应用程序,我只想使用应用程序access_token
这是从 facebook-sdk 示例中获取 access_token 的一部分。在我得到代码之后,我完全按照下面的例子来做 if self.request.get("code"):
我正在使用 IdentityServer4,我想将计算字段添加到 access_token/id_token。 此类字段的示例可以是用户的 IP(或 token 绑定(bind)哈希), token
我是一名优秀的程序员,十分优秀!