我如何获得访问令牌谷歌驱动器休息api调用



我想通过访问令牌从google drive获取文件列表。

我做了什么:

  1. 注册应用到Google开发控制台

  2. 我有客户端id基于OAuth 2.0

我想做什么:

  1. Call HttpCall for https://www.googleapis.com/drive/v2/files

  2. 我想在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");

  3. 如何使用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,它将包含访问令牌,但是您不需要直接使用它。

最新更新