2015-11-05 19 views
5
  @Override 
      protected List<String> doInBackground(Void... params) 
      { 
       try 
       { 
        //This line below is the cause of the insufficient permissions error 
        ListMessagesResponse messagesWithLabels = mService.users().messages().list("me").setQ("label:inbox").execute(); 

        /*for(Message m : messagesWithLabels.getMessages()) 
        { 
         if(m.size() > MAXSIZE) 
         { 
          List<MessagePartHeader> headers = m.getPayload().getHeaders(); 

          for (MessagePartHeader header : headers) 
          { 
           if (header.getName().equals("From") || header.getName().equals("Date") 
             || header.getName().equals("Subject") || header.getName().equals("To") 
             || header.getName().equals("CC")) { 
            messageDetails.put(header.getName().toLowerCase(), header.getValue()); 
           } 
          } 

          messageDetails.put("snippet", m.getSnippet()); 
          messageDetails.put("threadId", m.getThreadId()); 
          messageDetails.put("id", m.getId()); 
          messageDetails.put("body",m.getPayload().getBody().getData()); 

          GmailFunctions.deleteThread(mService, "me", m.getId()); 

          messageDetails.clear(); 
         } 
        }*/ 

        return getDataFromApi(); 
       } 
       catch (Exception e) 
       { 
        mLastError = e; 

        cancel(true); 

        return null; 
       } 
      } 

Tôi đã đánh dấu dòng đang gây ra 402 Miền không đủ quyền: toàn cục. Nếu tôi nhận xét cho biết dòng chương trình sẽ trả lại nhãn và in chúng vào màn hình mà không có lỗi quyền. Tôi đã ký APK phát hành của mình và thiết lập Bảng điều khiển dành cho nhà phát triển trên Google Play. Các ứng dụng được ký chỉ tốt nó SHA1 và tôi theo các ứng dụng mẫu mà lấy thông tin đăng nhập.API Gmail 403 Miền không đủ quyền toàn cầu

https://developers.google.com/gmail/api/quickstart/java

Làm gì để không đủ quyền?

Cảm ơn bạn.

Việc tạo ra mservice:

    private class MakeRequestTask extends AsyncTask< Void, Void, List<String> > { 


        private com.google.api.services.gmail.Gmail mService = null; 

        private Exception mLastError = null; 

        ArrayList<String> sRemovalIds = new ArrayList<String>(); 

        List<String> inserts = new ArrayList<String>(); 

        Map<String, Object> messageDetails = new HashMap<String, Object>(); 

        public MakeRequestTask(GoogleAccountCredential credential) 
        { 
         HttpTransport transport = AndroidHttp.newCompatibleTransport(); 

         JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); 

         mService = new com.google.api.services.gmail.Gmail.Builder(
           transport, jsonFactory, credential) 
           .setApplicationName("Gmail API Android Quickstart") 
           .build(); 
        } 

        @Override 
        protected List<String> doInBackground(Void... params) 
        { 
         try 
         { 
          ListMessagesResponse messagesWithLabels = mService.users().messages().list("me").setQ("label:inbox").execute(); 

          /*for(Message m : messagesWithLabels.getMessages()) 
          { 
           if(m.size() > MAXSIZE) 
+0

Bạn có thể hiển thị mã nơi bạn khởi tạo 'mService' của mình không? Có thể có vấn đề về quyền của bạn. – Tholle

+0

Tôi đang dùng một tấm rất nồi hơi từ mẫu. Tôi đã thêm đoạn mã đó. Cảm ơn bạn đã hỏi thăm. – Giuseppe

+0

Tôi chưa bao giờ sử dụng thư viện máy khách Java, vì vậy tôi e là tôi không biết. Cho đến khi người khác trả lời, bạn có thể thử yêu cầu của mình với 'http-requests' thông thường tại [Sân chơi Oauth] (https://developers.google.com/oauthplayground/) và cố gắng tìm hiểu xem phạm vi quyền API Gmail nhu cầu. – Tholle

Trả lời

6
private static final String[ ] SCOPES = { GmailScopes.GMAIL_LABELS, GmailScopes.GMAIL_COMPOSE, 
GmailScopes.GMAIL_INSERT, GmailScopes.GMAIL_MODIFY, GmailScopes.GMAIL_READONLY, GmailScopes.MAIL_GOOGLE_COM }; 

Sử dụng những phạm vi thay vì mặc định chỉ với GMAIL_LABELS làm việc cho tôi.

2

Bạn cũng có thể cần xóa tệp thông tin đăng nhập trước đó của mình sau khi thay đổi quyền. Điều này thường là $ HOME/.credentials/

Các vấn đề liên quan