Я пытаюсь получить доступ к API Gmail с помощью приложения для Android. Я успешно запросил и получил токен доступа, используя все доступные комбинации областей видимости. Но мне кажется, что каждый раз, когда я на самом деле пытаются использовать команду Gmail API я получаю 403 exception reading: Access not configured please use Google developers console to activate the api...
Доступ к API Gmail с помощью Android
Излишне говорить API активируется и ключ клиента был создан, используя правильное имя пакета & sha1 код. Такой же идентификатор клиента хорошо работает с функциями Google Plus.
Любой, у кого есть эта проблема или удалось подключиться к Gmail api из Android?
Благодаря
Вот лог:
09-04 21:40:54.014: W/System.err(26717): com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
09-04 21:40:54.014: W/System.err(26717): {
09-04 21:40:54.014: W/System.err(26717): "code" : 403,
09-04 21:40:54.014: W/System.err(26717): "errors" : [ {
09-04 21:40:54.014: W/System.err(26717): "domain" : "usageLimits",
09-04 21:40:54.014: W/System.err(26717): "message" : "Access Not Configured. Please use Google Developers Console to activate the API for your project.",
09-04 21:40:54.014: W/System.err(26717): "reason" : "accessNotConfigured"
09-04 21:40:54.014: W/System.err(26717): } ],
09-04 21:40:54.014: W/System.err(26717): "message" : "Access Not Configured. Please use Google Developers Console to activate the API for your project."
09-04 21:40:54.014: W/System.err(26717): }
Существуют ли какие-либо другие API, которые должны быть включены в API консоли, кроме Google+ API и API Gmail?
EDIT:
Я обнаружил, что с помощью проверки подлинности на основе WebView приведет маркер доступа, который будет предоставлять доступ к Gmail API, но это не является правильным решением, так как маркер недолгим. На данный момент GoogleAuthUtil предоставит токен, но его привилегий недостаточно для использования API Gmail. Кто-нибудь имел успех в подключении Android с API Gmail и хотел бы поделиться?
EDIT2:
Вот фрагменты того, что я делаю:
Получение токена:
token = GoogleAuthUtil.getToken(MainActivity.this, Plus.AccountApi.getAccountName(mGoogleApiClient), scope);
Попытка извлечь сообщения из API Gmail:
GoogleCredential credential = new GoogleCredential().setAccessToken(token);
JsonFactory jsonFactory = new JacksonFactory();
HttpTransport httpTransport = new NetHttpTransport();
service = new Gmail.Builder(httpTransport, jsonFactory, credential).setApplicationName("GmailApiTP").build();
ListMessagesResponse messagesRespose;
List<Message> m = null;
ArrayList<String> ids = new ArrayList<String>();
ids.add("INBOX");
try {
messagesRespose = service.users().messages().list("me").setLabelIds(ids).setQ("From: something")
.execute();
m = messagesRespose.getMessages();
} catch (IOException e) {
e.printStackTrace();
}
Исключение вызывается при использовании службы API Gmail. Кроме того, я попробовал очистить токен и попросить новый с тем же результатом.
Вы пытаетесь реализовать этот пример (https://developers.google.com/gmail/api/quickstart/quickstart-java#step_1_enable_the_gmail_api)? –
Да. это достаточно просто. Но все же не объясняет, почему GooglaApiCient возвращает непригодный токен. – TalMihr
Как и в случае с данными, 'GoogleAuthUtil' отлично работает для меня с использованием API Gmail для отправки электронной почты из службы на Jelly Bean и KitKat. Я использую API REST напрямую (т. Е. Через «HttpURLConnection») вместо клиентской библиотеки Java, но это должно быть независимо от получения маркера. Я получал ваше 403 некоторое время, пока я правильно установил идентификатор клиента для Android-приложения, но после этого все было хорошо, при этом обновление обрабатывалось автоматически. Одно из возможных мест, которые вы не видите, - это обращение 'UserRecoverableAuthExtension' к вызову' getToken() '. – rhashimoto