2016-08-14 154 views
0

我正在研究在Google的私人应用数据文件夹中创建/更新单个文本文件的应用。这是通过REST v3 Drive API完成的。 几天前它工作得很好,现在它没有。据我所知,唯一改变的是我将其上传到Google Play。我的 在我的应用程序连接到应用程序时遇到问题,因为'service'变量返回null。我的想法是,也许我需要刷新令牌或其他东西,但是我一直无法找到关于如何使用v3 API来做到的任何事情。 我非常感谢这方面的帮助。Google Drive Android API身份验证问题

这里是我试过到目前为止:
1.创建一个新的密钥库,并重新下载谷歌与services.json文件与新的SHA1指纹
2.禁用和重新启用驱动器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(); 
+0

SHA1指纹是否来自您用于签署已发布应用程序的相同密钥库? –

+0

没有.....我的应用程序在不同的密钥存储下发布,但我使用不同的密钥存储在adb上运行应用程序 - 这是一个问题吗? @ X-码 – wdavies973

回答

0

当你发布使用谷歌的服务,如驱动器REST API的应用程序,你需要添加一个证书的应用程序的生产版本,从您使用相同的密钥库导出的SHA1指纹签署APK。

通常在测试期间添加从调试密钥库派生的凭证。此凭证将而不是与该应用程序的生产版本一起使用。

所以你去Google Developer Console(https://console.developers.google.com/apis/credentials)并添加一个新的凭证。