File "oauth.instagram.js"
Full Path: /srv/www/www.cadoro.it/app/lib/ng-cordova-oauth/src/oauth.instagram.js
File size: 2.94 KB
MIME-type: text/plain
Charset: utf-8
(function() {
'use strict';
angular.module('oauth.instagram', ['oauth.utils'])
.factory('$ngCordovaInstagram', instagram);
function instagram($q, $http, $cordovaOauthUtility) {
return { signin: oauthInstagram };
/*
* Sign into the Instagram service
*
* @param string clientId
* @param array appScope
* @param object options
* @return promise
*/
function oauthInstagram(clientId, appScope, options) {
var deferred = $q.defer();
var split_tokens = {
'code':'?',
'token':'#'
};
if(window.cordova) {
if($cordovaOauthUtility.isInAppBrowserInstalled()) {
var redirect_uri = "http://localhost/callback";
var response_type = "token";
var instagramUrl = 'https://www.instagram.com/';
if(options !== undefined) {
if(options.hasOwnProperty("redirect_uri")) {
redirect_uri = options.redirect_uri;
}
if(options.hasOwnProperty("response_type")) {
response_type = options.response_type;
}
}
var scope = '';
if (appScope && appScope.length > 0) {
scope = '&scope=' + appScope.join('+');
}
var url='https://api.instagram.com/oauth/authorize/?client_id=' + clientId + scope + '&response_type=' + response_type + '&redirect_uri=' + redirect_uri;
var browserRef = window.cordova.InAppBrowser.open(url, '_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) {
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");
}
} else if ((event.url)===instagramUrl) {
browserRef.executeScript({
code: "window.location = '"+url+"';"
});
}
});
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;
}
}
instagram.$inject = ['$q', '$http', '$cordovaOauthUtility'];
})();