Мое приложение взаимодействует с Google только с помощью Javascript. Он запрашивает доступ к профилю пользователя, доступ к электронной почте и разрешения на управление контактами. При загрузке страницы приложение проверяет, предоставил ли пользователь эти разрешения, и получает токен доступа, если он это сделал.
Вот пример кода:
var GoogleContacts = {
...
checkAuth: function(){
gapi.auth.authorize({
client_id: googleKeys.clientId,
scope: googleKeys.scopes,
immediate: true
},
jQuery.proxy(this.handleAuthResult, this)
);
},
askAuth: function(){
gapi.auth.authorize({
client_id: googleKeys.clientId,
scope: googleKeys.scopes,
immediate: false
},
jQuery.proxy(this.handleAuthResult, this)
);
}
...
}
....
function handleGoogleApiLoad(){
gapi.client.setApiKey(googleKeys.apiKey);
gapi.auth.init(function(){console.info('popup api ready')});
setTimeout(function(){GoogleContacts.checkAuth();}, 300);
}
....
$('#emailButton').click(function() {
if(!accessToken)
GoogleContacts.askAuth();
...
});
Теперь, если пользователь заходит в первый раз, у него спрашивают правильные разрешения, когда он нажимает кнопку «Отправить письмо». Когда пользователь перезагружает страницу, бесшовная проверка разрешений возвращает ошибку, а когда пользователь нажимает кнопку "отправить электронное письмо", мы снова открываем всплывающее окно авторизации Google, и теперь оно запрашивает разрешение на автономный доступ.
Это кажется неправильным, поскольку JS API не имеет фактического использования для автономного доступа.
Похоже, эта проблема возникла после того, как Google выпустила функцию дополнительной аутентификации: http://googleplusplatform.blogspot.co.il/2013/12/google-sign-in-improvements11.html
Это ошибка, которая скоро будет исправлена , или мы должны как-то изменить код, чтобы не путать наших пользователей со странными запросами разрешений?
Обновление:
Я пытался использовать метод plus api и gapi.auth.signIn()
, но с тем же результатом. По-видимому, эта проблема зависит от области действия, поскольку, когда я использую только область входа в систему, все работает должным образом, но добавление области доступа к контактам Google https:||www.google.com/m8/feeds/ всегда приводит к автономному доступу. запрос при входе на страницу второй раз. Вот скрипка, подтверждающая это: http://jsfiddle.net/hjLM6/6/ Это должно быть ошибкой, и я бы очень хотел, чтобы Google поскорее с ней разобрался, так как она отпугивает пользователей.