Hi Jake,
I see you are using timeout for 1sec to load all the necessary file(which
is loaded automatically), but do you think its the right way to it? I mean
what if internet connectivity is slow and it takes more than 1sec to load?
I was also stuck to same problem, came with exact same solution. But
somehow I dont think its right way to do.
On Wednesday, June 19, 2013 at 3:41:29 AM UTC+5:30, Jake Marsh wrote:
>
> I was right (I think) about using the promise/defer implementation from
> angularJS.
>
> Here's my final service:
>
> .service('googleLogin', ['$http', '$rootScope', '$q', function ($http,
> $rootScope, $q) {
> var clientId = '{MY CLIENT ID}',
> apiKey = '{MY API KEY}',
> scopes = 'https://www.googleapis.com/auth/userinfo.email
> https://www.google.com/m8/feeds',
> domain = '{MY COMPANY DOMAIN}',
> userEmail,
> deferred = $q.defer();
>
> this.login = function () {
> gapi.auth.authorize({ client_id: clientId, scope: scopes,
> immediate: false, hd: domain }, this.handleAuthResult);
>
> return deferred.promise;
> }
>
> this.handleClientLoad = function () {
> gapi.client.setApiKey(apiKey);
> gapi.auth.init(function () { });
> window.setTimeout(checkAuth, 1);
> };
>
> this.checkAuth = function() {
> gapi.auth.authorize({ client_id: clientId, scope: scopes,
> immediate: true, hd: domain }, this.handleAuthResult );
> };
>
> this.handleAuthResult = function(authResult) {
> if (authResult && !authResult.error) {
> var data = {};
> gapi.client.load('oauth2', 'v2', function () {
> var request = gapi.client.oauth2.userinfo.get();
> request.execute(function (resp) {
> $rootScope.$apply(function () {
> data.email = resp.email;
> });
> });
> });
> deferred.resolve(data);
> } else {
> deferred.reject('error');
> }
> };
>
> this.handleAuthClick = function (event) {
> gapi.auth.authorize({ client_id: clientId, scope: scopes,
> immediate: false, hd: domain }, this.handleAuthResult );
> return false;
> };
>
> }]);
>
>
> And how it's called in the controller:
>
> var promise = googleLogin.login();
> promise.then(function (data) {
> console.log(data.email);
> }, function (reason) {
> console.log('Failed: ' + reason);
> });
>
>
> On Tuesday, June 18, 2013 2:03:13 PM UTC-5, Jake Marsh wrote:
>>
>> Right now I'm working on an AngularJS/RequireJS project, using the Google
>> API Javascript Client for authentication/user info. I'm using the Google
>> API for users to login, and then get their email address/contacts. I'm
>> currently doing this in a service...
>
>
--
You received this message because you are subscribed to the Google Groups
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.