我试图为Android编写一个小小的gmail客户端作为培训。
我从https://developers.google.com/gmail/api/quickstart/android获取了gmail api指南示例,对其进行了一些修改,以获取带有标题和消息的消息。身体由线程。我将范围设置为GmailScopes.Gmail_modify
并编辑主请求函数,如下所示:
private List<String> getDataFromApi() throws IOException {
// Get the labels in the user's account.
String user = "me";
List<String> labels = new ArrayList<String>();
ListLabelsResponse listResponse =
mService.users().labels().list(user).execute();
ListThreadsResponse listThreads = null;
try {
listThreads = mService.users().threads().list(user).execute();
} catch (IOException ioex){
Log.e(LOG_TAG, "First: " + ioex.toString());
}
for (Thread thread : listThreads.getThreads()) {
try {
thread = mService.users().threads().get(user, thread.getId()).setFormat("full").execute();
} catch (IOException ioex){
Log.e(LOG_TAG, "Second: " + ioex.toString());
}
for(Message message : thread.getMessages()){
labels.add(message.getId());
}
}
return labels;
}
但我总是得到
Second: GoogleJsonResponseException: 403 Forbidden {
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Metadata scope doesn't allow format FULL",
"reason" : "forbidden"
} ],
"message" : "Metadata scope doesn't allow format FULL"
}
我尝试了不同的范围配置,但似乎服务范围始终设置为GmailScopes.GMAIL_METADATA
答案 0 :(得分:6)
使用Google API Explorer时,这正是我的问题。以下是我为解决它而采取的措施:
希望有所帮助:)
答案 1 :(得分:1)
答案 2 :(得分:0)
获得设备联系人的权限后,您必须批准选择的应对。所以我第一次批准了元数据范围。接下来,当我需要批准只读范围时,没有窗口可以执行此操作。因此,您需要从Google帐户中删除范围权限并重新安装应用。