Несоответствие формата и формата 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. И вот что я сделал, чтобы решить это:

  1. Перейдите на https://security.google.com/settings/security/permissions
  2. Выберите приложение, с которым вы играете, мое Google Explorers Explorer
  3. Нажмите Удалить> ОК
  4. В следующий раз просто запросите, какие именно разрешения вам нужны.

Надеюсь, это поможет:)

Вы должны удалить область "метаданных".

проверьте разрешения приложения, чтобы убедиться, что у вас есть только эти 3 области:

  1. https://mail.google.com/
  2. gmail.modify
  3. только для чтения, либо удалите разрешения и добавьте их снова.

получил ту же ошибку, когда учетная запись службы, которую я использовал, имела только эти области ( Безопасность&amp;gt; Элементы управления API&amp;gt; Делегирование всего домена ):

  • https://www.googleapis.com/auth/gmail.readonly
  • https://www.googleapis.com/auth/gmail.metadata

и добавление

  • https://mail.google.com/

решил проблему

После получения разрешений на контакты устройства вы должны утвердить выбранные копии. Поэтому я впервые утвердил объем метаданных. В следующий раз, когда мне нужно было одобрить область только для чтения, не было окна, чтобы сделать это. Таким образом, вам нужно удалить разрешения областей из учетной записи Google и переустановить приложение.

Другие вопросы по тегам