我如何获得 google drive rest api 调用的访问令牌?
How can i get access token for google drive rest api call?
我想传递访问令牌以从 google 驱动器获取文件列表。
我做了什么:
将应用程序注册到 Google 开发控制台。
我有基于 OAuth 2.0 的客户端 ID
我想做什么:
为https://www.googleapis.com/drive/v2/files
致电HttpCall
我想像这样在 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
客户端 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);
有关查询的更多详细信息please look at this part of documentation。
如果您使用 GDAA 中可用的范围进行调用,那将是您最好的选择。
否则您可以使用 Google Drive Java 客户端库。在这种情况下,您可以使用 GoogleAccountCredential 进行身份验证,它将包含访问令牌,但您不需要直接使用它。请参阅示例 here。
我想传递访问令牌以从 google 驱动器获取文件列表。
我做了什么:
将应用程序注册到 Google 开发控制台。
我有基于 OAuth 2.0 的客户端 ID
我想做什么:
为
https://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
客户端 ID 获取授权访问令牌
HttpCall
您应该查看 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);
有关查询的更多详细信息please look at this part of documentation。
如果您使用 GDAA 中可用的范围进行调用,那将是您最好的选择。
否则您可以使用 Google Drive Java 客户端库。在这种情况下,您可以使用 GoogleAccountCredential 进行身份验证,它将包含访问令牌,但您不需要直接使用它。请参阅示例 here。