| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830 |
- angular.module("oauth.providers", ["oauth.utils"])
- .factory("$cordovaOauth", ["$q", '$http', "$cordovaOauthUtility", function($q, $http, $cordovaOauthUtility) {
- return {
- /*
- * Sign into the ADFS service (ADFS 3.0 onwards)
- *
- * @param string clientId (client registered in ADFS, with redirect_uri configured to: http://localhost/callback)
- * @param string adfsServer (url of the ADFS Server)
- * @param string relyingPartyId (url of the Relying Party (resource relying on ADFS for authentication) configured in ADFS)
- * @return promise
- */
- adfs: function(clientId, adfsServer, relyingPartyId) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var browserRef = window.open(adfsServer + '/adfs/oauth2/authorize?response_type=code&client_id=' + clientId +'&redirect_uri=http://localhost/callback&resource=' + relyingPartyId, '_blank', 'location=no');
- browserRef.addEventListener("loadstart", function(event) {
- if((event.url).indexOf('http://localhost/callback') === 0) {
- var requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: adfsServer + "/adfs/oauth2/token", data: "client_id=" + clientId + "&code=" + requestToken + "&redirect_uri=http://localhost/callback&grant_type=authorization_code" })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Dropbox service
- *
- * @param string appKey
- * @param object options
- * @return promise
- */
- dropbox: function(appKey, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open("https://www.dropbox.com/1/oauth2/authorize?client_id=" + appKey + "&redirect_uri=" + redirect_uri + "&response_type=token", "_blank", "location=no,clearsessioncache=yes,clearcache=yes");
- 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, uid: parameterMap.uid });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Digital Ocean service
- *
- * @param string clientId
- * @param string clientSecret
- * @param object options
- * @return promise
- */
- digitalOcean: function(clientId, clientSecret, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open("https://cloud.digitalocean.com/v1/oauth/authorize?client_id=" + clientId + "&redirect_uri=" + redirect_uri + "&response_type=code&scope=read%20write", "_blank", "location=no,clearsessioncache=yes,clearcache=yes");
- browserRef.addEventListener("loadstart", function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- var requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: "https://cloud.digitalocean.com/v1/oauth/token", data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&redirect_uri=" + redirect_uri + "&grant_type=authorization_code" + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Google service
- *
- * @param string clientId
- * @param array appScope
- * @param object options
- * @return promise
- */
- google: function(clientId, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- 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(" ") + '&approval_prompt=force&response_type=token', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- 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");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the GitHub service
- *
- * @param string clientId
- * @param string clientSecret
- * @param array appScope
- * @param object options
- * @return promise
- */
- github: function(clientId, clientSecret, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://github.com/login/oauth/authorize?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&scope=' + appScope.join(","), '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http.defaults.headers.post.accept = 'application/json';
- $http({method: "post", url: "https://github.com/login/oauth/access_token", data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&redirect_uri=" + redirect_uri + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Facebook service
- *
- * @param string clientId
- * @param array appScope
- * @param object options
- * @return promise
- */
- facebook: function(clientId, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var flowUrl = "https://www.facebook.com/v2.0/dialog/oauth?client_id=" + clientId + "&redirect_uri=" + redirect_uri + "&response_type=token&scope=" + appScope.join(",");
- if(options !== undefined && options.hasOwnProperty("auth_type")) {
- flowUrl += "&auth_type=" + options.auth_type;
- }
- var browserRef = window.open(flowUrl, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- 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, expires_in: parameterMap.expires_in });
- } else {
- if ((event.url).indexOf("error_code=100") !== 0)
- deferred.reject("Facebook returned error_code=100: Invalid permissions");
- else
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the LinkedIn service
- *
- * @param string clientId
- * @param string clientSecret
- * @param array appScope
- * @param string state
- * @param object options
- * @return promise
- */
- linkedin: function(clientId, clientSecret, appScope, state, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://www.linkedin.com/uas/oauth2/authorization?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&scope=' + appScope.join(" ") + '&response_type=code&state=' + state, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: "https://www.linkedin.com/uas/oauth2/accessToken", data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&redirect_uri=" + redirect_uri + "&grant_type=authorization_code" + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Instagram service
- *
- * @param string clientId
- * @param array appScope
- * @param object options
- * @return promise
- */
- instagram: function(clientId, appScope, options) {
- var deferred = $q.defer();
- var split_tokens = {
- 'code':'?',
- 'token':'#'
- };
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- var response_type = "token";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- if(options.hasOwnProperty("response_type")) {
- response_type = options.response_type;
- }
- }
- var browserRef = window.open('https://api.instagram.com/oauth/authorize/?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&scope=' + appScope.join(" ") + '&response_type='+response_type, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- browserRef.removeEventListener("exit",function(event){});
- browserRef.close();
- var callbackResponse = (event.url).split(split_tokens[response_type])[1];
- var parameterMap = $cordovaOauthUtility.parseResponseParameters(callbackResponse);
- if(parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- deferred.resolve({ access_token: parameterMap.access_token });
- } else if(parameterMap.code !== undefined && parameterMap.code !== null) {
- deferred.resolve({ code: parameterMap.code });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Box service
- *
- * @param string clientId
- * @param string clientSecret
- * @param string appState
- * @param object options
- * @return promise
- */
- box: function(clientId, clientSecret, appState, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://app.box.com/api/oauth2/authorize/?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&state=' + appState + '&response_type=code', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: "https://app.box.com/api/oauth2/token", data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&redirect_uri=" + redirect_uri + "&grant_type=authorization_code" + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Reddit service
- *
- * @param string clientId
- * @param string clientSecret
- * @param array appScope
- * @param object options
- * @return promise
- */
- reddit: function(clientId, clientSecret, appScope, compact, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://ssl.reddit.com/api/v1/authorize?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&duration=permanent&state=ngcordovaoauth&scope=' + appScope.join(",") + '&response_type=code', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http.defaults.headers.post.Authorization = 'Basic ' + btoa(clientId + ":" + clientSecret);
- $http({method: "post", url: "https://ssl.reddit.com/api/v1/access_token", data: "redirect_uri=" + redirect_uri + "&grant_type=authorization_code" + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Twitter service
- * Note that this service requires jsSHA for generating HMAC-SHA1 Oauth 1.0 signatures
- *
- * @param string clientId
- * @param string clientSecret
- * @return promise
- */
- twitter: function(clientId, clientSecret, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- if(typeof jsSHA !== "undefined") {
- var oauthObject = {
- oauth_consumer_key: clientId,
- oauth_nonce: $cordovaOauthUtility.createNonce(10),
- oauth_signature_method: "HMAC-SHA1",
- oauth_timestamp: Math.round((new Date()).getTime() / 1000.0),
- oauth_version: "1.0"
- };
- var signatureObj = $cordovaOauthUtility.createSignature("POST", "https://api.twitter.com/oauth/request_token", oauthObject, { oauth_callback: redirect_uri }, clientSecret);
- $http({
- method: "post",
- url: "https://api.twitter.com/oauth/request_token",
- headers: {
- "Authorization": signatureObj.authorization_header,
- "Content-Type": "application/x-www-form-urlencoded"
- },
- data: "oauth_callback=" + encodeURIComponent(redirect_uri)
- })
- .success(function(requestTokenResult) {
- var requestTokenParameters = (requestTokenResult).split("&");
- var parameterMap = {};
- for(var i = 0; i < requestTokenParameters.length; i++) {
- parameterMap[requestTokenParameters[i].split("=")[0]] = requestTokenParameters[i].split("=")[1];
- }
- if(parameterMap.hasOwnProperty("oauth_token") === false) {
- deferred.reject("Oauth request token was not received");
- }
- var browserRef = window.open('https://api.twitter.com/oauth/authenticate?oauth_token=' + parameterMap.oauth_token, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- 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.hasOwnProperty("oauth_verifier") === false) {
- deferred.reject("Browser authentication failed to complete. No oauth_verifier was returned");
- }
- delete oauthObject.oauth_signature;
- oauthObject.oauth_token = parameterMap.oauth_token;
- var signatureObj = $cordovaOauthUtility.createSignature("POST", "https://api.twitter.com/oauth/access_token", oauthObject, { oauth_verifier: parameterMap.oauth_verifier }, clientSecret);
- $http({
- method: "post",
- url: "https://api.twitter.com/oauth/access_token",
- headers: {
- "Authorization": signatureObj.authorization_header
- },
- params: {
- "oauth_verifier": parameterMap.oauth_verifier
- }
- })
- .success(function(result) {
- var accessTokenParameters = result.split("&");
- var parameterMap = {};
- for(var i = 0; i < accessTokenParameters.length; i++) {
- parameterMap[accessTokenParameters[i].split("=")[0]] = accessTokenParameters[i].split("=")[1];
- }
- if(parameterMap.hasOwnProperty("oauth_token_secret") === false) {
- deferred.reject("Oauth access token was not received");
- }
- deferred.resolve(parameterMap);
- })
- .error(function(error) {
- deferred.reject(error);
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- })
- .error(function(error) {
- deferred.reject(error);
- });
- } else {
- deferred.reject("Missing jsSHA JavaScript library");
- }
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Meetup service
- *
- * @param string clientId
- * @param object options
- * @return promise
- */
- meetup: function(clientId, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://secure.meetup.com/oauth2/authorize/?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&response_type=token', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- 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(parameterMap);
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Salesforce service
- *
- * Suggestion: use salesforce oauth with forcetk.js(as SDK)
- *
- * @param string loginUrl (such as: https://login.salesforce.com ; please notice community login)
- * @param string clientId (copy from connection app info)
- * @param string redirectUri (callback url in connection app info)
- * @return promise
- */
- salesforce: function (loginUrl, clientId) {
- var redirectUri = 'http://localhost/callback';
- var getAuthorizeUrl = function (loginUrl, clientId, redirectUri) {
- return loginUrl+'services/oauth2/authorize?display=touch'+
- '&response_type=token&client_id='+escape(clientId)+
- '&redirect_uri='+escape(redirectUri);
- };
- var startWith = function(string, str) {
- return (string.substr(0, str.length) === str);
- };
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var browserRef = window.open(getAuthorizeUrl(loginUrl, clientId, redirectUri), "_blank", "location=no,clearsessioncache=yes,clearcache=yes");
- browserRef.addEventListener("loadstart", function(event) {
- if(startWith(event.url, redirectUri)) {
- var oauthResponse = {};
- var fragment = (event.url).split('#')[1];
- if (fragment) {
- var nvps = fragment.split('&');
- for (var nvp in nvps) {
- var parts = nvps[nvp].split('=');
- oauthResponse[parts[0]] = unescape(parts[1]);
- }
- }
- if (typeof oauthResponse === 'undefined' ||
- typeof oauthResponse.access_token === 'undefined') {
- deferred.reject("Problem authenticating");
- } else {
- deferred.resolve(oauthResponse);
- }
- setTimeout(function() {
- browserRef.close();
- }, 10);
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Strava service
- *
- * @param string clientId
- * @param string clientSecret
- * @param array appScope
- * @param object options
- * @return promise
- */
- strava: function(clientId, clientSecret, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://www.strava.com/oauth/authorize?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&scope=' + appScope.join(",") + '&response_type=code&approval_prompt=force', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: "https://www.strava.com/oauth/token", data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Withings service
- * Note that this service requires jsSHA for generating HMAC-SHA1 Oauth 1.0 signatures
- *
- * @param string clientId
- * @param string clientSecret
- * @return promise
- */
- withings: function(clientId, clientSecret) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- if(typeof jsSHA !== "undefined") {
- // Step 1 : get a oAuth "request token"
- var oauthObject = $cordovaOauthUtility.generateOauthParametersInstance(clientId);
- oauthObject.oauth_callback = 'http://localhost/callback';
- var requestTokenUrlBase = "https://oauth.withings.com/account/request_token";
- var signatureObj = $cordovaOauthUtility.createSignature("GET", requestTokenUrlBase, {}, oauthObject, clientSecret);
- oauthObject.oauth_signature = signatureObj.signature;
- var requestTokenParameters = $cordovaOauthUtility.generateUrlParameters(oauthObject);
- $http({method: "get", url: requestTokenUrlBase + "?" + requestTokenParameters })
- .success(function(requestTokenResult) {
- // Step 2 : End-user authorization
- var parameterMap = $cordovaOauthUtility.parseResponseParameters(requestTokenResult);
- if(parameterMap.hasOwnProperty("oauth_token") === false) {
- deferred.reject("Oauth request token was not received");
- }
- var oauthObject = $cordovaOauthUtility.generateOauthParametersInstance(clientId);
- oauthObject.oauth_token = parameterMap.oauth_token;
- // used in step 3
- var oauthTokenSecret = parameterMap.oauth_token_secret;
- var authorizeUrlBase = "https://oauth.withings.com/account/authorize";
- var signatureObj = $cordovaOauthUtility.createSignature("GET", authorizeUrlBase, {}, oauthObject, clientSecret);
- oauthObject.oauth_signature = signatureObj.signature;
- var authorizeParameters = $cordovaOauthUtility.generateUrlParameters(oauthObject);
- var browserRef = window.open(authorizeUrlBase + '?' + authorizeParameters, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- // STEP 3: User Data Access token
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf("http://localhost/callback") === 0) {
- var callbackResponse = (event.url).split("?")[1];
- parameterMap = $cordovaOauthUtility.parseResponseParameters(callbackResponse);
- if(parameterMap.hasOwnProperty("oauth_verifier") === false) {
- deferred.reject("Browser authentication failed to complete. No oauth_verifier was returned");
- }
- var oauthObject = $cordovaOauthUtility.generateOauthParametersInstance(clientId);
- oauthObject.oauth_token = parameterMap.oauth_token;
- var accessTokenUrlBase = "https://oauth.withings.com/account/access_token";
- var signatureObj = $cordovaOauthUtility.createSignature("GET", accessTokenUrlBase, {}, oauthObject, clientSecret, oauthTokenSecret);
- oauthObject.oauth_signature = signatureObj.signature;
- var accessTokenParameters = $cordovaOauthUtility.generateUrlParameters(oauthObject);
- $http({method: "get", url: accessTokenUrlBase + '?' + accessTokenParameters})
- .success(function(result) {
- var parameterMap = $cordovaOauthUtility.parseResponseParameters(result);
- if(parameterMap.hasOwnProperty("oauth_token_secret") === false) {
- deferred.reject("Oauth access token was not received");
- }
- deferred.resolve(parameterMap);
- })
- .error(function(error) {
- deferred.reject(error);
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- })
- .error(function(error) {
- deferred.reject(error);
- });
- } else {
- deferred.reject("Missing jsSHA JavaScript library");
- }
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Foursquare service
- *
- * @param string clientId
- * @param object options
- * @return promise
- */
- foursquare: function(clientId, options) {
- var deferred = $q.defer();
- if (window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if ($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://foursquare.com/oauth2/authenticate?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&response_type=token', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- 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) {
- var promiseResponse = {
- access_token: parameterMap.access_token,
- expires_in: parameterMap.expires_in
- };
- deferred.resolve(promiseResponse);
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Magento service
- * Note that this service requires jsSHA for generating HMAC-SHA1 Oauth 1.0 signatures
- *
- * @param string baseUrl
- * @param string clientId
- * @param string clientSecret
- * @return promise
- */
- magento: function(baseUrl, clientId, clientSecret) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- if(typeof jsSHA !== "undefined") {
- var oauthObject = {
- oauth_callback: "http://localhost/callback",
- oauth_consumer_key: clientId,
- oauth_nonce: $cordovaOauthUtility.createNonce(5),
- oauth_signature_method: "HMAC-SHA1",
- oauth_timestamp: Math.round((new Date()).getTime() / 1000.0),
- oauth_version: "1.0"
- };
- var signatureObj = $cordovaOauthUtility.createSignature("POST", baseUrl + "/oauth/initiate", oauthObject, { oauth_callback: "http://localhost/callback" }, clientSecret);
- $http.defaults.headers.post.Authorization = signatureObj.authorization_header;
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: baseUrl + "/oauth/initiate", data: "oauth_callback=http://localhost/callback" })
- .success(function(requestTokenResult) {
- var requestTokenParameters = (requestTokenResult).split("&");
- var parameterMap = {};
- for(var i = 0; i < requestTokenParameters.length; i++) {
- parameterMap[requestTokenParameters[i].split("=")[0]] = requestTokenParameters[i].split("=")[1];
- }
- if(parameterMap.hasOwnProperty("oauth_token") === false) {
- deferred.reject("Oauth request token was not received");
- }
- var tokenSecret = parameterMap.oauth_token_secret;
- var browserRef = window.open(baseUrl + '/oauth/authorize?oauth_token=' + parameterMap.oauth_token, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf("http://localhost/callback") === 0) {
- 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.hasOwnProperty("oauth_verifier") === false) {
- deferred.reject("Browser authentication failed to complete. No oauth_verifier was returned");
- }
- delete oauthObject.oauth_signature;
- delete oauthObject.oauth_callback;
- oauthObject.oauth_token = parameterMap.oauth_token;
- oauthObject.oauth_nonce = $cordovaOauthUtility.createNonce(5);
- oauthObject.oauth_verifier = parameterMap.oauth_verifier;
- var signatureObj = $cordovaOauthUtility.createSignature("POST", baseUrl + "/oauth/token", oauthObject, {}, clientSecret, tokenSecret);
- $http.defaults.headers.post.Authorization = signatureObj.authorization_header;
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: baseUrl + "/oauth/token" })
- .success(function(result) {
- var accessTokenParameters = result.split("&");
- var parameterMap = {};
- for(var i = 0; i < accessTokenParameters.length; i++) {
- parameterMap[accessTokenParameters[i].split("=")[0]] = accessTokenParameters[i].split("=")[1];
- }
- if(parameterMap.hasOwnProperty("oauth_token_secret") === false) {
- deferred.reject("Oauth access token was not received");
- }
- deferred.resolve(parameterMap);
- })
- .error(function(error) {
- deferred.reject(error);
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- })
- .error(function(error) {
- deferred.reject(error);
- });
- } else {
- deferred.reject("Missing jsSHA JavaScript library");
- }
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Vkontakte service
- *
- * @param string clientId
- * @param array appScope (for example: "friends,wall,photos,messages")
- * @return promise
- */
- vkontakte: function(clientId, appScope) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var browserRef = window.open('https://oauth.vk.com/authorize?client_id=' + clientId + '&redirect_uri=http://oauth.vk.com/blank.html&response_type=token&scope=' + appScope.join(",") + '&display=touch&response_type=token', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- var tmp = (event.url).split("#");
- if (tmp[0] == 'https://oauth.vk.com/blank.html' || tmp[0] == 'http://oauth.vk.com/blank.html') {
- 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) {
- var output = { access_token: parameterMap.access_token, expires_in: parameterMap.expires_in };
- if(parameterMap.email !== undefined && parameterMap.email !== null){
- output.email = parameterMap.email;
- }
- deferred.resolve(output);
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Odnoklassniki service
- *
- * @param string clientId
- * @param array appScope (for example: "VALUABLE_ACCESS ,GROUP_CONTENT,VIDEO_CONTENT")
- * @return promise
- */
- odnoklassniki: function (clientId, appScope)
- {
- var deferred = $q.defer();
- if (window.cordova)
- {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if ($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true)
- {
- var browserRef = window.open('http://www.odnoklassniki.ru/oauth/authorize?client_id=' + clientId + '&scope=' + appScope.join(",") + '&response_type=token&redirect_uri=http://localhost/callback' + '&layout=m', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function (event)
- {
- if ((event.url).indexOf("http://localhost/callback") === 0)
- {
- 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, session_secret_key: parameterMap.session_secret_key });
- } else
- {
- deferred.reject("Problem authenticating");
- }
- setTimeout(function ()
- {
- browserRef.close();
- }, 10);
- }
- });
- browserRef.addEventListener('exit', function (event)
- {
- deferred.reject("The sign in flow was canceled");
- });
- } else
- {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else
- {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Imgur service
- *
- * @param string clientId
- * @param object options
- * @return promise
- */
- imgur: function(clientId, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://api.imgur.com/oauth2/authorize?client_id=' + clientId + '&response_type=token', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- 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, expires_in: parameterMap.expires_in, account_username: parameterMap.account_username });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Spotify service
- *
- * @param string clientId
- * @param object options
- * @return promise
- */
- spotify: function(clientId, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- 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.spotify.com/authorize?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&response_type=token&scope=' + appScope.join(" "), '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- 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, expires_in: parameterMap.expires_in, account_username: parameterMap.account_username });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Uber service
- *
- * @param string clientId
- * @param appScope array
- * @param object options
- * @return promise
- */
- uber: function(clientId, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://login.uber.com/oauth/authorize?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&response_type=token&scope=' + appScope.join(" "), '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- 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, scope: parameterMap.scope });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Windows Live Connect service
- *
- * @param string clientId
- * @param array appScope
- * @param object options
- * @return promise
- */
- windowsLive: function (clientId, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "https://login.live.com/oauth20_desktop.srf";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://login.live.com/oauth20_authorize.srf?client_id=' + clientId + "&scope=" + appScope.join(",") + '&response_type=token&display=touch' + '&redirect_uri=' + redirect_uri, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- 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, expires_in: parameterMap.expires_in });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function (event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Yammer service
- *
- * @param string clientId
- * @param object options
- * @return promise
- */
- yammer: function(clientId, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://www.yammer.com/dialog/oauth?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&response_type=token', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- 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 });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Venmo service
- *
- * @param string clientId
- * @param array appScope
- * @param object options
- * @return promise
- */
- venmo: function(clientId, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://api.venmo.com/v1/oauth/authorize?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&response_type=token&scope=' + appScope.join(" "), '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- 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, expires_in: parameterMap.expires_in });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Stripe service
- *
- * @param string clientId
- * @param string clientSecret
- * @param string appScope
- * @param object options
- * @return promise
- */
- stripe: function(clientId, clientSecret, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://connect.stripe.com/oauth/authorize?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&scope=' + appScope + '&response_type=code', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf("http://localhost/callback") === 0) {
- requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: "https://connect.stripe.com/oauth/token", data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&redirect_uri=" + redirect_uri + "&grant_type=authorization_code" + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Rally service
- *
- * @param string clientId
- * @param string clientSecret
- * @param string appScope
- * @param object options
- * @return promise
- */
- rally: function(clientId, clientSecret, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://rally1.rallydev.com/login/oauth2/auth?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&scope=' + appScope + '&response_type=code', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf("http://localhost/callback") === 0) {
- requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: "https://rally1.rallydev.com/login/oauth2/auth", data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&redirect_uri=" + redirect_uri + "&grant_type=authorization_code" + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the FamilySearch service
- *
- * @param string clientId
- * @param object options
- * @return promise
- */
- familySearch: function(clientId, state, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if(cordovaMetadata.hasOwnProperty("cordova-plugin-inappbrowser") === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open("https://ident.familysearch.org/cis-web/oauth2/v3/authorization?client_id=" + clientId + "&redirect_uri=" + redirect_uri + "&response_type=code&state=" + state, "_blank", "location=no,clearsessioncache=yes,clearcache=yes");
- browserRef.addEventListener("loadstart", function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- var requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: "https://ident.familysearch.org/cis-web/oauth2/v3/token", data: "client_id=" + clientId + "&redirect_uri=" + redirect_uri + "&grant_type=authorization_code&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
- /*
- * Sign into the Envato service
- *
- * @param string clientId
- * @param object options
- * @return promise
- */
- envato: function(clientId, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://api.envato.com/authorization?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&response_type=token', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- 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, expires_in: parameterMap.expires_in });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- }
- };
- }]);
- /*
- * Cordova AngularJS Oauth
- *
- * Created by Nic Raboy
- * http://www.nraboy.com
- *
- *
- *
- * DESCRIPTION:
- *
- * Use Oauth sign in for various web services.
- *
- *
- * REQUIRES:
- *
- * Apache Cordova 3.5+
- * Apache InAppBrowser Plugin
- * Apache Cordova Whitelist Plugin
- *
- *
- * SUPPORTS:
- *
- * Dropbox
- * Digital Ocean
- * Google
- * GitHub
- * Facebook
- * LinkedIn
- * Instagram
- * Box
- * Reddit
- * Twitter
- * Meetup
- * Salesforce
- * Strava
- * Withings
- * Foursquare
- * Magento
- * vkontakte
- * Odnoklassniki
- * ADFS
- * Imgur
- * Spotify
- * Uber
- * Windows Live Connect
- * Yammer
- * Venmo
- * Stripe
- * Rally
- * Family Search
- * Envato
- */
- angular.module("ngCordovaOauth", [
- "oauth.providers",
- "oauth.utils"
- ]);
- angular.module("oauth.utils", [])
- .factory("$cordovaOauthUtility", ["$q", function($q) {
- return {
- /*
- * Check to see if the mandatory InAppBrowser plugin is installed
- *
- * @param
- * @return boolean
- */
- isInAppBrowserInstalled: function(cordovaMetadata) {
- var inAppBrowserNames = ["cordova-plugin-inappbrowser", "org.apache.cordova.inappbrowser"];
- return inAppBrowserNames.some(function(name) {
- return cordovaMetadata.hasOwnProperty(name);
- });
- },
- /*
- * Sign an Oauth 1.0 request
- *
- * @param string method
- * @param string endPoint
- * @param object headerParameters
- * @param object bodyParameters
- * @param string secretKey
- * @param string tokenSecret (optional)
- * @return object
- */
- createSignature: function(method, endPoint, headerParameters, bodyParameters, secretKey, tokenSecret) {
- if(typeof jsSHA !== "undefined") {
- var headerAndBodyParameters = angular.copy(headerParameters);
- var bodyParameterKeys = Object.keys(bodyParameters);
- for(var i = 0; i < bodyParameterKeys.length; i++) {
- headerAndBodyParameters[bodyParameterKeys[i]] = encodeURIComponent(bodyParameters[bodyParameterKeys[i]]);
- }
- var signatureBaseString = method + "&" + encodeURIComponent(endPoint) + "&";
- var headerAndBodyParameterKeys = (Object.keys(headerAndBodyParameters)).sort();
- for(i = 0; i < headerAndBodyParameterKeys.length; i++) {
- if(i == headerAndBodyParameterKeys.length - 1) {
- signatureBaseString += encodeURIComponent(headerAndBodyParameterKeys[i] + "=" + headerAndBodyParameters[headerAndBodyParameterKeys[i]]);
- } else {
- signatureBaseString += encodeURIComponent(headerAndBodyParameterKeys[i] + "=" + headerAndBodyParameters[headerAndBodyParameterKeys[i]] + "&");
- }
- }
- var oauthSignatureObject = new jsSHA(signatureBaseString, "TEXT");
- var encodedTokenSecret = '';
- if (tokenSecret) {
- encodedTokenSecret = encodeURIComponent(tokenSecret);
- }
- headerParameters.oauth_signature = encodeURIComponent(oauthSignatureObject.getHMAC(encodeURIComponent(secretKey) + "&" + encodedTokenSecret, "TEXT", "SHA-1", "B64"));
- var headerParameterKeys = Object.keys(headerParameters);
- var authorizationHeader = 'OAuth ';
- for(i = 0; i < headerParameterKeys.length; i++) {
- if(i == headerParameterKeys.length - 1) {
- authorizationHeader += headerParameterKeys[i] + '="' + headerParameters[headerParameterKeys[i]] + '"';
- } else {
- authorizationHeader += headerParameterKeys[i] + '="' + headerParameters[headerParameterKeys[i]] + '",';
- }
- }
- return { signature_base_string: signatureBaseString, authorization_header: authorizationHeader, signature: headerParameters.oauth_signature };
- } else {
- return "Missing jsSHA JavaScript library";
- }
- },
- /*
- * Create Random String Nonce
- *
- * @param integer length
- * @return string
- */
- createNonce: function(length) {
- var text = "";
- var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- for(var i = 0; i < length; i++) {
- text += possible.charAt(Math.floor(Math.random() * possible.length));
- }
- return text;
- },
- generateUrlParameters: function (parameters) {
- var sortedKeys = Object.keys(parameters);
- sortedKeys.sort();
- var params = "";
- var amp = "";
- for (var i = 0 ; i < sortedKeys.length; i++) {
- params += amp + sortedKeys[i] + "=" + parameters[sortedKeys[i]];
- amp = "&";
- }
- return params;
- },
- parseResponseParameters: function (response) {
- if (response.split) {
- var parameters = response.split("&");
- var parameterMap = {};
- for(var i = 0; i < parameters.length; i++) {
- parameterMap[parameters[i].split("=")[0]] = parameters[i].split("=")[1];
- }
- return parameterMap;
- }
- else {
- return {};
- }
- },
- generateOauthParametersInstance: function(consumerKey) {
- var nonceObj = new jsSHA(Math.round((new Date()).getTime() / 1000.0), "TEXT");
- var oauthObject = {
- oauth_consumer_key: consumerKey,
- oauth_nonce: nonceObj.getHash("SHA-1", "HEX"),
- oauth_signature_method: "HMAC-SHA1",
- oauth_timestamp: Math.round((new Date()).getTime() / 1000.0),
- oauth_version: "1.0"
- };
- return oauthObject;
- }
- };
- }]);
|