Использование учетной записи службы Google для доступа к gmail api из контекстного гаджета
То, что я хотел бы сделать, это получить доступ к API gmail / calendar, используя javascript из контекстного гаджета gmail (а не перенаправлять запросы куда-либо еще).
Я также хочу сделать это, используя служебную учетную запись для проверки подлинности, чтобы доступ контролировался через настройку / домен гаджета, а пользователю никогда не предлагалось вводить какие-либо данные.
Документация вокруг этой области представляет собой массу устаревшей и запутанной информации, поэтому трудно даже сказать, предполагается ли это возможным или нет.
Я пробовал несколько разных подходов с небольшим успехом.
Согласно https://developers.google.com/gadgets/docs/basic?csw=1 написанию гаджетов OAuth больше не поддерживается. Потратил много времени на то, чтобы разобраться с этим подходом, прежде чем заметить этот комментарий и отказаться от него.
Затем попытался использовать gadgets.io.makeRequest с https://developers.google.com/gadgets/docs/reference/, но это не подходило для того, что я хотел, слишком много собственное решение. Я не имел успеха с этим, поэтому отказался от него, чтобы попробовать что-то еще.
Затем попробовал gapi.auth.authorize https://developers.google.com/api-client-library/javascript/features/authentication На первый взгляд это показалось многообещающим, но я не могу найти никакой информации об использовании его с учетной записью службы, и Я просто получаю ошибки, когда пытаюсь его использовать (но по крайней мере ошибки кажутся движением вперед!).
Мой текущий код для этого соответствует
function connectToGmail() {
gapi.client.setApiKey(API_KEY);
window.setTimeout(checkAuth,1);
}
function checkAuth() {
var parameters = {
client_id: OAUTH2_CLIENT_ID,
scope: OAUTH2_SCOPES,
immediate: true,
output: 'embedded'
};
gapi.auth.authorize(parameters, function(result) {
console.log('login complete');
console.log(gapi.auth.getToken());
});
}
но обратный вызов авторизации никогда не вызывается.
Я тоже пытался добавить к параметрам hd: и несколько других недокументированных значений, которые я видел, которые я использовал для поиска деталей.
В разных экспериментах у меня вообще эта ошибка в консоли браузера
Отказался отображать " https://accounts.google.com/o/oauth2/auth?client_id=**********. Googleusercontent.com&response_type=token&state=1847286098%7C0.1045275236" в кадре, поскольку он установите "X-Frame-Options" на "SAMEORIGIN".
Справедливо, я понимаю ту же самую причину возникновения этой проблемы, но хотелось бы, чтобы она дала мне ошибки посредством обратного вызова - я не собираюсь открывать здесь что-нибудь - вот почему я хочу использовать служебную учетную запись!
Если я вручную перехожу на этот URL, я вижу сломанную страницу робота,
- Это ошибка
Ошибка: invalid_client
нет зарегистрированного происхожденияДетали запроса
немедленная = истина
response_type = маркер
scope = https://www.googleapis.com/auth/gmail.readonly
redirect_uri = PostMessage
прокси =oauth2relay869439690
состояние =1847286098|0,1045275236
origin = https://uvh02lohhb14dcmd9rb9buet1dr4b61j-a-gm-opensocial.googleusercontent.com/
include_granted_scopes= верно
HD = ***********. co.uk
client_id =.apps.googleusercontent.com
гл = еп
Я не думаю, что там есть что-то полезное, просто для полноты изложения того, что я пробовал.
Любые идеи о том, если это - есть / должно быть / будет - возможно, и если нет какие-либо предложения для других подходов?