【问题标题】:Google Drive Android API Authentication ProblemsGoogle Drive Android API 身份验证问题
【发布时间】:2016-08-14 14:29:02
【问题描述】:

我正在开发一个应用程序,该应用程序在 Google 的私有应用程序数据文件夹中创建/更新单个文本文件。这是通过 REST v3 Drive API 完成的。 几天前它工作得很好,现在不行了。据我所知,唯一改变的是我将它上传到了 Google Play。我是 我的应用程序连接到应用程序时遇到问题,因为 service 变量返回 null。我的想法是,也许我需要一个刷新令牌或其他东西,但我无法找到任何关于如何使用 v3 API 做到这一点的信息。 非常感谢您对此的帮助。

这是我迄今为止尝试过的:
1. 创建一个新的密钥库并使用新的 sha1 指纹重新下载 google-services.json 文件
2. 禁用并重新启用 Drive API
3. 我在“发布”变体上开发我的项目,可能很糟糕,但它之前工作过
4. 用头撞墙

这里是源代码:

// Gather credentials
credential = GoogleAccountCredential.usingOAuth2(getApplicationContext(), Arrays.asList(SCOPES)).setBackOff(new ExponentialBackOff());
SharedPreferences settings = getSharedPreferences("Roblu", Context.MODE_PRIVATE);
String accountName = settings.getString("accountName", "");
credential.setSelectedAccountName(accountName);

// Start Google services
HttpTransport transport = AndroidHttp.newCompatibleTransport();

JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
// This is returning null
service = new Drive.Builder(transport, jsonFactory, credential).setApplicationName("Roblu").build();
client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();

编辑
此行为 Drive 对象返回 null。想法?

service = new com.google.api.services.drive.Drive.Builder(transport, jsonFactory, credential).setApplicationName("Roblu").build();

【问题讨论】:

  • SHA1 指纹是否来自您用于签署已发布应用程序的同一密钥库?
  • 不......我的应用程序是在不同的密钥库下发布的,但我正在使用不同的密钥库通过 adb 运行应用程序——这是一个问题吗? @x-code

标签: java android token drive


【解决方案1】:

当您发布使用 Google 服务(如 Drive REST API)的应用时,您需要为该应用的生产版本添加一个凭据,该凭据来自您用于签署 APK 的同一密钥库中的 SHA1 指纹。

通常在测试期间,您会添加从调试密钥库派生的凭据。此凭据不适用于应用的生产版本。

因此,您转到 Google 开发者控制台 (https://console.developers.google.com/apis/credentials) 并添加新凭据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多