HOWTO使用服务帐户JSON创建GoogleCredential

时间:2015-08-14 22:07:23

标签: android google-play-services in-app-billing subscription google-api-java-client

我正在使用Android Publisher v2Oauth2 v2的Java SDK。创建服务帐户后,我获得了一个Google Play Android Developer服务帐户的JSON,其中包含客户端ID,电子邮件,私钥等。我试图环顾四周并找出如何创建凭据以便我使用AndoirdPublisher服务,以获取我的Android应用程序的用户订阅,权利等信息,并将此信息存储在我们的后端服务器上。

我正在努力弄清楚如何解决这个问题。到目前为止,我所看到的所有文档都没有帮助使用下载的JSON创建GoogleCredential

例如,有documentation,但它只提到了P12文件,而不是JSON。我想尽可能避免使用P12因为我有多个客户端&我想将这个JSON保存在某种数据库和数据库中。然后用它来为每个客户创建凭证。

只是为了澄清我正在尝试创建此处所述的GoogleCredential对象,

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.sqladmin.SQLAdminScopes;

// ...

String emailAddress = "123456789000-abc123def456@developer.gserviceaccount.com";
JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
GoogleCredential credential = new GoogleCredential.Builder()
    .setTransport(httpTransport)
    .setJsonFactory(JSON_FACTORY)
    .setServiceAccountId(emailAddress)
    .setServiceAccountPrivateKeyFromP12File(new File("MyProject.p12"))
    .setServiceAccountScopes(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN))
    .build();

但是我没有使用像setServiceAccountPrivateKeyFromP12File()这样的P12文件设置服务帐户,而是想使用带有相同信息的JSON&我创建服务帐户时生成的。

1 个答案:

答案 0 :(得分:24)

我能够通过在github上挖掘GoogleCredential本身的源代码来解决这个问题(目前它位于here)。

原来我的代码中存在的google-api-java-client版本略显过时了。我将其升级到最新版1.20.0&我现在可以直接指定为创建GoogleCredential而创建的JSON对象。我希望Google能够更新他们的文档。

以下是代码段

InputStream resourceAsStream = AuthTest.class.getClassLoader().getResourceAsStream("Google-Play-Android-Developer.json");

GoogleCredential credential = GoogleCredential.fromStream(resourceAsStream);

那很简单。