fix #799: gdrive auth error

(cherry picked from commit 02aa303)
This commit is contained in:
antelle 2017-12-09 21:46:08 +01:00
parent 4b7f6fdf9b
commit 977cd00187
1 changed files with 23 additions and 12 deletions

View File

@ -36,7 +36,7 @@ _.extend(StorageBase.prototype, {
this.logger = new Logger('storage-' + this.name);
if (this._oauthReturnMessage) {
this.logger.debug('OAuth return message', this._oauthReturnMessage);
this._oauthProcessReturn(this._oauthReturnMessage, _.noop);
this._oauthProcessReturn(this._oauthReturnMessage);
delete this._oauthReturnMessage;
delete sessionStorage.authStorage;
}
@ -159,31 +159,42 @@ _.extend(StorageBase.prototype, {
if (!e.data) {
return;
}
Backbone.off('popup-closed', popupClosed);
window.removeEventListener('message', windowMessage);
this._oauthProcessReturn(e.data, callback);
const token = this._oauthProcessReturn(e.data);
if (token) {
Backbone.off('popup-closed', popupClosed);
window.removeEventListener('message', windowMessage);
if (token.error) {
this.logger.error('OAuth error', token.error, token.errorDescription);
callback('OAuth: ' + token.error);
} else {
callback();
}
} else {
this.logger.debug('Skipped OAuth message', e.data);
}
};
Backbone.on('popup-closed', popupClosed);
window.addEventListener('message', windowMessage);
},
_oauthProcessReturn: function(message, callback) {
_oauthProcessReturn: function(message) {
const token = this._oauthMsgToToken(message);
if (token.error) {
this.logger.error('OAuth error', token.error, token.errorDescription);
callback('OAuth: ' + token.error);
} else {
if (token && !token.error) {
this._oauthToken = token;
this.runtimeData.set(this.name + 'OAuthToken', token);
this.logger.debug('OAuth token received');
CookieManager.saveCookies();
callback();
}
return token;
},
_oauthMsgToToken: function(data) {
if (data.error || !data.token_type) {
return { error: data.error || 'no token', errorDescription: data.error_description };
if (!data.token_type) {
if (data.error) {
return {error: data.error, errorDescription: data.error_description};
} else {
return undefined;
}
}
return {
dt: Date.now() - 60 * 1000,