Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1043)

Unified Diff: remoting/webapp/me2mom/oauth2.js

Issue 8416007: Refactored web-app (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/webapp/me2mom/host_session.js ('k') | remoting/webapp/me2mom/remoting.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/webapp/me2mom/oauth2.js
diff --git a/remoting/webapp/me2mom/oauth2.js b/remoting/webapp/me2mom/oauth2.js
index ee7cc733c6d8c9500a3dfd30106c47f4ab81496b..7010715a001cf2df5fbdb5990f437de953599147 100644
--- a/remoting/webapp/me2mom/oauth2.js
+++ b/remoting/webapp/me2mom/oauth2.js
@@ -29,20 +29,26 @@ remoting.OAuth2 = function() {
remoting.OAuth2.prototype.KEY_REFRESH_TOKEN_ = 'oauth2-refresh-token';
/** @private */
remoting.OAuth2.prototype.KEY_ACCESS_TOKEN_ = 'oauth2-access-token';
+/** @private */
+remoting.OAuth2.prototype.KEY_EMAIL_ = 'remoting-email';
// Constants for parameters used in retrieving the OAuth2 credentials.
-/** @private */ remoting.OAuth2.prototype.CLIENT_ID_ =
+/** @private */
+remoting.OAuth2.prototype.CLIENT_ID_ =
'440925447803-2pi3v45bff6tp1rde2f7q6lgbor3o5uj.' +
'apps.googleusercontent.com';
/** @private */
remoting.OAuth2.prototype.CLIENT_SECRET_ = 'W2ieEsG-R1gIA4MMurGrgMc_';
-/** @private */ remoting.OAuth2.prototype.SCOPE_ =
+/** @private */
+remoting.OAuth2.prototype.SCOPE_ =
'https://www.googleapis.com/auth/chromoting ' +
'https://www.googleapis.com/auth/googletalk ' +
'https://www.googleapis.com/auth/userinfo#email';
-/** @private */ remoting.OAuth2.prototype.REDIRECT_URI_ =
+/** @private */
+remoting.OAuth2.prototype.REDIRECT_URI_ =
'https://talkgadget.google.com/talkgadget/blank';
-/** @private */ remoting.OAuth2.prototype.OAUTH2_TOKEN_ENDPOINT_ =
+/** @private */
+remoting.OAuth2.prototype.OAUTH2_TOKEN_ENDPOINT_ =
'https://accounts.google.com/o/oauth2/token';
/** @return {boolean} True if the app is already authenticated. */
@@ -60,6 +66,7 @@ remoting.OAuth2.prototype.isAuthenticated = function() {
*/
remoting.OAuth2.prototype.clear = function() {
window.localStorage.removeItem(this.KEY_REFRESH_TOKEN_);
+ window.localStorage.removeItem(this.KEY_EMAIL_);
this.clearAccessToken();
};
@@ -291,3 +298,49 @@ remoting.OAuth2.prototype.callWithToken = function(myfunc) {
myfunc(this.getAccessToken());
};
+
+/**
+ * Get the user's email address.
+ *
+ * @param {function(?string):void} setEmail Callback invoked when the email
+ * address is available, or on error.
+ * @return {void} Nothing.
+ */
+remoting.OAuth2.prototype.getEmail = function(setEmail) {
+ /** @type {remoting.OAuth2} */
+ var that = this;
+ /** @param {XMLHttpRequest} xhr The XHR response. */
+ var onResponse = function(xhr) {
+ that.email = null;
+ if (xhr.status == 200) {
+ // TODO(ajwong): See if we can't find a JSON endpoint.
+ that.email = xhr.responseText.split('&')[0].split('=')[1];
+ }
+ window.localStorage.setItem(that.KEY_EMAIL_, that.email);
+ setEmail(that.email);
+ };
+
+ /** @param {string} token The access token. */
+ var getEmailFromToken = function(token) {
+ var headers = { 'Authorization': 'OAuth ' + token };
+ // TODO(ajwong): Update to new v2 API.
+ remoting.xhr.get('https://www.googleapis.com/userinfo/email',
+ onResponse, '', headers);
+ };
+
+ this.callWithToken(getEmailFromToken);
+};
+
+/**
+ * If the user's email address is cached, return it, otherwise return null.
+ *
+ * @return {?string} The email address, if it has been cached by a previous call
+ * to getEmail, otherwise null.
+ */
+remoting.OAuth2.prototype.getCachedEmail = function() {
+ var value = window.localStorage.getItem(this.KEY_EMAIL_);
+ if (typeof value == 'string') {
+ return value;
+ }
+ return null;
+};
« no previous file with comments | « remoting/webapp/me2mom/host_session.js ('k') | remoting/webapp/me2mom/remoting.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698