使用Android Drive API时,尝试使用以下方式进行连接:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Drive.API).addScope(Drive.SCOPE_FILE)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this).build();
getGoogleApiClient.connect();
我选择了一个帐户屏幕,选择一个帐户后,我看到了:
查看和管理您已打开或创建的Google云端硬盘文件 使用此应用程序
如果我要访问其他应用创建的文件该怎么办?
我的申请是否有办法要求授权特定文件夹?
答案 0 :(得分:5)
Google Play Services client library为Android开发人员提供API,以便与各个Google服务无缝集成。
该库还允许您的应用提供一致的用户界面,以获取用户授权以使用其凭据访问这些服务。
访问Google云端硬盘服务
Google Play服务客户端库附带Google Drive Android API,可提供对Google云端硬盘服务的访问权限。
但是,Google云端硬盘Android API目前仅提供 drive.file 和 drive.appfolder authorization scopes,如果您的应用需要访问权限,则会受到限制用户驱动器上的所有内容。
要提供驱动器范围,您需要使用Drive API Client Library for Java提供的REST API。该库依赖于Google APIs Client Library for Java,它提供了生成的客户端库,可以使用来自任何应用程序(Web,已安装或Android)的REST API访问各个Google服务
Download the Drive API v2 Client Library for Java。 libs文件夹包含所有应用程序类型(Web,已安装或Android应用程序)可能需要的所有全局适用的依赖项(Google API Client Library for Java)。
对于Android,您需要以下jar(如drive / readme.html中所述)来整理依赖项
google-api-services-drive-v2-rev143-1.19.0.jar
google-api-client-1.19.0.jar
google-api-client-android-1.19.0.jar
google-http-client-1.19.0.jar
google-http-client-android-1.19.0.jar
google-http-client-gson-1.19.0.jar
google-oauth-client-1.19.0.jar
gson-2.1.jar
jsr305-1.3.9.jar
<强>授权强>
在访问Google云端硬盘(或任何其他Google)服务之前,您需要授权您的应用(使用OAuth 2.0)
对于使用 Google Play服务客户端库的应用程序,这将由GoogleApiClient处理。
但是,如果您要使用的服务/ Google API未包含在 Google Play服务库中,则可以使用相应的REST API进行连接以手动发出请求或使用客户端库由服务提供商提供,但您必须获取OAuth 2.0令牌。
对于驱动器范围,您需要使用 Google API Client Library for Java 和生成的客户端库(在我们的示例中为驱动器v2)。要获得授权令牌,您可以 -
请注意,使用最后两种方法,您同时使用 Google Play服务客户端库(用于授权)和 Google API Client Library for Java 以及 Drive API v2 Client Library for Java (访问到驱动身份验证范围的Google云端硬盘服务)。
套餐参考
同时结帐 -
答案 1 :(得分:4)
Google Drive Android API仅支持两个范围:
drive.file:(https://www.googleapis.com/auth/drive.file) 按文件访问由应用程序创建或打开的文件
drive.appdata(https://www.googleapis.com/auth/drive.appdata) 允许访问Application Data文件夹
您需要使用Google云端硬盘网络服务(https://developers.google.com/drive/v2/reference/),您的应用必须使用适用于Java的Google API客户端库。 (https://code.google.com/p/google-api-java-client)
完全访问的范围:&#34; https://www.googleapis.com/auth/drive&#34;
GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE);
credential.setSelectedAccountName(accountName);
Drive service = new Drive.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential).build();
答案 2 :(得分:1)
请勿使用Google Play服务提供的API。它不支持DRIVE
范围。如果没有DRIVE
范围,您就没有足够的权限来访问其他应用创建的文件。
您可以使用 DriveScopes.DRIVE ,这就是我在我的应用中所做的事情。我的Android应用程序需要与我的旧桌面应用程序交换数据。
您需要使用Java Jar库中的API。 https://developers.google.com/drive/web/quickstart/quickstart-java需要包含大量JAR文件,这会增加您的最终APK尺寸。但是,在ProGuard的帮助下,APK的大小仍然可以管理。
但是,我预计Google很快会强制开发人员仅使用Google Play服务,这是他们业务战略的一部分。因此,如果发生这种情况,您需要制定某种备份计划。
有关详细信息,请参阅https://stackoverflow.com/questions/21807602/migration-strategy-for-google-drive-android-api-from-google-api-java-client-go和Plans for drive.appdata scope in android google drive API
答案 3 :(得分:0)
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Drive.API)
.addScope(Drive.SCOPE_FILE)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
我认为你错过了addScope,我自己从未使用它,但在查看文档时,这是我可以找到的缺失。 documentation