@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)
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
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
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