У меня была такая же проблема (на андроид) и понял, библиотеку, я использую (ngCordova/cordovaOauth) удалял кэш и данные сессии (с использованием window.open(..., ..., 'clearsessioncache=yes,clearcache=yes')
Так работает сейчас:. Входа в систему (ы) I использование запоминается, и мне не нужно снова вводить мой пароль, поэтому cookie определенно хранится, по крайней мере, на android.
В случае, если вам интересно, вот соответствующий код в ngCordova:
var redirect_uri = "http://localhost/callback";
if(options !== undefined) {
if(options.hasOwnProperty("redirect_uri")) {
redirect_uri = options.redirect_uri;
}
}
var browserRef = window.open('https://accounts.google.com/o/oauth2/auth?client_id='
+ clientId + '&redirect_uri=' + redirect_uri
+ '&scope=' + appScope.join(" ")
+ '&prompt=select_account&response_type=token', '_blank',
'location=no');
browserRef.addEventListener("loadstart", function(event) {
if((event.url).indexOf(redirect_uri) === 0) {
browserRef.removeEventListener("exit",function(event){});
browserRef.close();
var callbackResponse = (event.url).split("#")[1];
var responseParameters = (callbackResponse).split("&");
var parameterMap = [];
for(var i = 0; i < responseParameters.length; i++) {
parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
}
if(parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
deferred.resolve({ access_token: parameterMap.access_token, token_type: parameterMap.token_type, expires_in: parameterMap.expires_in });
} else {
deferred.reject("Problem authenticating");
}
}
});
browserRef.addEventListener('exit', function(event) {
deferred.reject("The sign in flow was canceled");
});
Я немного изменил его в соответствии с моими потребностями. Вы найдете оригинал here, вокруг линии 200 (ищите google:
).
У меня такая же проблема в IOS 10. У вас есть решение для IOS –