我想通过访问令牌从google drive获取文件列表。
我做了什么:
-
注册应用到Google开发控制台
-
我有客户端id基于OAuth 2.0
我想做什么:
-
Call
HttpCall
forhttps://www.googleapis.com/drive/v2/files
-
我想在header中设置这样的访问令牌:
DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost post = new HttpPost("https://www.googleapis.com/drive/v2/files"); post.addHeader("Content-Type", "application/json"); post.addHeader("Authorization","Bearer XXXXXXXXXXXXXXXXXXXXXXXXX");
-
如何使用
OAuth2.0
Client Id获得授权的访问令牌
你应该看看Drive for Android的文档
这样整个工作就简单多了。例如
创建文件:
@Override
public void onConnected(Bundle connectionHint) {
super.onConnected(connectionHint);
IntentSender intentSender = Drive.DriveApi
.newOpenFileActivityBuilder()
.setMimeType(new String[] { "text/plain", "text/html" })
.build(getGoogleApiClient());
try {
startIntentSenderForResult(
intentSender, REQUEST_CODE_OPENER, null, 0, 0, 0);
} catch (SendIntentException e) {
Log.w(TAG, "Unable to send intent", e);
}
}
列出文件夹中的文件
列出文件夹中的所有文件
/**
* An activity that illustrates how to list files in a folder.
*/
public class ListFilesInFolderActivity extends BaseDemoActivity implements
ResultCallback {
private static DriveId sFolderId = DriveId.decodeFromString("DriveId:0B2EEtIjPUdX6MERsWlYxN3J6RU0");
private ListView mResultsListView;
private ResultsAdapter mResultsAdapter;
@Override
public void onConnected(Bundle connectionHint) {
super.onCreate(connectionHint);
setContentView(R.layout.activity_listfiles);
mResultsListView = (ListView) findViewById(R.id.listViewResults);
mResultsAdapter = new ResultsAdapter(this);
mResultsListView.setAdapter(mResultsAdapter);
DriveFolder folder = Drive.DriveApi.getFolder(getGoogleApiClient(), sFolderId);
folder.listChildren(getGoogleApiClient()).setResultCallback(childrenRetrievedCallback);
}
ResultCallback<MetadataBufferResult> childrenRetrievedCallback = new
ResultCallback<MetadataBufferResult>() {
@Override
public void onResult(MetadataBufferResult result) {
if (!result.getStatus().isSuccess()) {
showMessage("Problem while retrieving files");
return;
}
mResultsAdapter.clear();
mResultsAdapter.append(result.getMetadataBuffer());
showMessage("Successfully listed files.");
}
}
}
查询文件
查询一个文件,说"HelloWorld.java":
Query query = new Query.Builder()
.addFilter(Filters.eq(SearchableField.TITLE, "HelloWorld.java"))
.build();
Drive.DriveApi.query(googleApiClient, query);
查询的详细信息请参阅文档的这一部分
如果您正在使用GDAA中可用的作用域进行调用,那么这将是您最好的选择。
否则你可以使用Google Drive Java客户端库。在本例中,您可以为Auth使用GoogleAccountCredential,它将包含访问令牌,但是您不需要直接使用它。