我正在使用Android Publisher v2
和Oauth2 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&我创建服务帐户时生成的。
答案 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);
那很简单。