Gmail api范围&格式不匹配

时间:2016-11-12 18:13:06

标签: java android oauth-2.0 gmail-api

我试图为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

3 个答案:

答案 0 :(得分:6)

使用Google API Explorer时,这正是我的问题。以下是我为解决它而采取的措施:

  1. 转到https://security.google.com/settings/security/permissions
  2. 选择您正在玩的应用,我的是Google API Explorer
  3. 点击删除&gt;行
  4. 下次,只需要确切地请求您需要的权限。
  5. 希望有所帮助:)

答案 1 :(得分:1)

你应该删除&#34;元数据&#34;范围。

检查应用权限以确保您只有这3个范围:

  1. docker autocompose
  2. gmail.modify
  3. 只读 ,或者删除权限并重新添加。

答案 2 :(得分:0)

获得设备联系人的权限后,您必须批准选择的应对。所以我第一次批准了元数据范围。接下来,当我需要批准只读范围时,没有窗口可以执行此操作。因此,您需要从Google帐户中删除范围权限并重新安装应用。