Несоответствие формата и формата API Gmail
Я пытаюсь написать крошечный клиент Gmail для Android в качестве обучения. Я взял пример руководства по gmail api с https://developers.google.com/gmail/api/quickstart/android и немного его изменил, чтобы получать сообщения с заголовками и телом по темам. Я установил прицелы на 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
4 ответа
Это именно моя проблема в эти дни, когда я играю в Google APIs Explorer. И вот что я сделал, чтобы решить это:
- Перейдите на https://security.google.com/settings/security/permissions
- Выберите приложение, с которым вы играете, мое Google Explorers Explorer
- Нажмите Удалить> ОК
- В следующий раз просто запросите, какие именно разрешения вам нужны.
Надеюсь, это поможет:)
Вы должны удалить область "метаданных".
проверьте разрешения приложения, чтобы убедиться, что у вас есть только эти 3 области:
- https://mail.google.com/
- gmail.modify
- только для чтения, либо удалите разрешения и добавьте их снова.
получил ту же ошибку, когда учетная запись службы, которую я использовал, имела только эти области ( Безопасность&gt; Элементы управления API&gt; Делегирование всего домена ):
-
https://www.googleapis.com/auth/gmail.readonly
-
https://www.googleapis.com/auth/gmail.metadata
и добавление
-
https://mail.google.com/
решил проблему
После получения разрешений на контакты устройства вы должны утвердить выбранные копии. Поэтому я впервые утвердил объем метаданных. В следующий раз, когда мне нужно было одобрить область только для чтения, не было окна, чтобы сделать это. Таким образом, вам нужно удалить разрешения областей из учетной записи Google и переустановить приложение.