@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;
}
}
मैंने लाइन को चिह्नित किया है जो 402 अपर्याप्त अनुमति डोमेन: वैश्विक त्रुटि उत्पन्न कर रहा है। अगर मैंने कहा लाइन पर टिप्पणी की है तो कार्यक्रम लेबल वापस कर देगा और अनुमति त्रुटि के बिना स्क्रीन पर उन्हें प्रिंट करेगा। मैंने अपनी रिलीज एपीके पर हस्ताक्षर किए हैं और Google Play डेवलपर कंसोल स्थापित किया है। ऐप ठीक है यह SHA1 ठीक है और मैंने नमूना आवेदन का पालन किया जो प्रमाण-पत्र पुनर्प्राप्त करता है।जीमेल एपीआई 403 अपर्याप्त अनुमति डोमेन वैश्विक
https://developers.google.com/gmail/api/quickstart/java
अपर्याप्त अनुमतियों के बारे में क्या करें?
धन्यवाद।
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)
में होता है क्या आप वह कोड दिखा सकते हैं जहां आप अपनी 'सेवा' को तुरंत चालू करते हैं? शायद यह आपकी अनुमति मुद्दा है। – Tholle
नमूना से बहुत बॉयलर प्लेट है I मैंने उस स्निपेट को जोड़ा। पूछने के लिए धन्यवाद। – Giuseppe
मैंने कभी भी जावा क्लाइंट लाइब्रेरी का उपयोग नहीं किया है, इसलिए मुझे डर है कि मुझे नहीं पता। जब तक कोई और जवाब न दे, आप [Oauth Playground] (https://developers.google.com/oauthplayground/) पर नियमित 'http-request' के साथ अपने अनुरोध का प्रयास कर सकते हैं, और यह पता लगाने की कोशिश करें कि जीमेल एपीआई की अनुमति आपको किस प्रकार गुंजाइश है जरुरत। – Tholle