相关疑难解决方法(0)

无法从Google Play Android Developer API获取订阅信息

我正在使用Google API Client Library for Java来获取有关在我的Android应用程序中购买的用户订阅的信息.这就是我现在正在做的事情:

HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
JsonFactory JSON_FACTORY = new JacksonFactory();

GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
                    .setJsonFactory(JSON_FACTORY)
                    .setServiceAccountId(GOOGLE_CLIENT_MAIL)
                    .setServiceAccountScopes("https://www.googleapis.com/auth/androidpublisher")
                    .setServiceAccountPrivateKeyFromP12File(new File(GOOGLE_KEY_FILE_PATH))
                    .build();

Androidpublisher publisher = new Androidpublisher.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential).
                    setApplicationName(GOOGLE_PRODUCT_NAME).
                    build();

Androidpublisher.Purchases purchases = publisher.purchases();
Get get = purchases.get("XXXXX", subscriptionId, token);
SubscriptionPurchase subscripcion = get.execute(); //Exception returned here
Run Code Online (Sandbox Code Playgroud)

GOOGLE_CLIENT_MAIL是来自Google控制台的API Access的电子邮件地址. GOOGLE_KEY_FILE_PATH是从API Access下载的p12文件.
GOOGLE_PRODUCT_NAME是品牌信息的产品名称.
在Google APIS控制台中,启用了"Google Play Android Developer API"服务.

我得到的是:

{
  "code" : 401,
  "errors" : [ {
    "domain" : "androidpublisher",
    "message" …
Run Code Online (Sandbox Code Playgroud)

java android google-api subscription google-play

25
推荐指数
3
解决办法
2万
查看次数

如何使用Google提供程序在Firebase上重新验证用户?

reauthenticate()在Firebase中使用的示例仅显示如何重新验证使用电子邮件和密码签名的用户:

AuthCredential credential = EmailAuthProvider.getCredential("user@example.com", "password1234");
FirebaseAuth.getInstance().getCurrentUser().reauthenticate(credential);
Run Code Online (Sandbox Code Playgroud)

我也知道如何使用Facebook Provider(credential = FacebookAuthProvider.getCredential(AccessToken.getCurrentAccessToken().toString()))重新进行身份验证.

问题是Google API中没有等效方法来获取当前的访问令牌并最终获得AuthCredential.那么getCredential()在这种情况下我会传递什么?

android firebase firebase-authentication google-signin

21
推荐指数
1
解决办法
4388
查看次数

尝试通过服务帐户发送电子邮件,获取com.google.api.client.auth.oauth2.TokenResponseException:401 Unauthorized

我有一个Google Apps帐户.我正在尝试使用服务帐户代表用户发送电子邮件.

我已经浏览了互联网,没有任何工作,我几乎不知所措.

我跟着Java指南,我仍然继续 com.google.api.client.auth.oauth2.TokenResponseException: 401 Unauthorized

为什么这段代码片段给我401 Unauthorized?

JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();

            GoogleCredential credential = new GoogleCredential.Builder()
                    .setTransport(httpTransport)
                    .setJsonFactory(JSON_FACTORY)
                    .setServiceAccountId("something@something-something.iam.gserviceaccount.com")
                    .setServiceAccountPrivateKeyFromP12File(new File("path/to/file/myProject.p12"))
                    .setServiceAccountScopes(GmailScopes.all())
                    .setServiceAccountUser("user@mydomain.org")
                    .build();

Gmail gmailService = new Gmail.Builder(httpTransport, JSON_FACTORY, credential)
                    .setApplicationName("My App") // DOES IT MATTER WHAT THIS IS SET TO?
                    .build();

MimeMessage mimeMessage = createEmail("myemail@gmail.com", "user@mydomain.org", "Testing", "hey");
sendMessage(gmailService, "me", mimeMessage);
Run Code Online (Sandbox Code Playgroud)

这些方法基本上是从Googles文档中复制/粘贴的:

/**
     * Create a MimeMessage using the parameters provided.
     *
     * @param to email address of the receiver
     * @param …
Run Code Online (Sandbox Code Playgroud)

authentication oauth google-api google-apps gmail-api

14
推荐指数
1
解决办法
821
查看次数