1

Ich entwickle eine Anwendung mit Cordova und möchte Dateien in Googe Drive speichern.Verwendung der Google API Javascript in Cordova/Phonegap

Ich habe Erfolg in der Anmeldung bei Google, mit dem Cordova-Plugin-googleplus (https://github.com/EddyVerbruggen/cordova-plugin-googleplus). Allerdings konnte ich die Plugin-Returns zu mir nicht bekommen, AccessToken oder IdToken, also könnte ich mit Google Javascript API verwenden.

window.plugins.googleplus.login(
    { 
     'scopes': 'https://www.googleapis.com/auth/drive.file profile', 
     'offline': true, 
     'webApiKey': ‘CODE’ 
    }, 
    function (obj) { 
     $scope.$apply(function() { 
      $scope.srcImage = obj.imageUrl; 
      $scope.NomeGoogle = obj.displayName; 
     }); 
    }, 
    function (msg) { 
     alert('Erro'); 
     alert('error: ' + msg); 
    } 
); 

Ich habe versucht, den Code unten verwenden, kehrte aber ich folgende Fehlermeldung:

"Uncaught gapi.auth2.ExternallyVisibleError: Invalid cookiePolicy"

gapi.load('auth2', function() { 

    gapi.auth2.init({ 

     client_id: 'REVERSED_CLIENTID', 

    }).then(function(){ 

     auth2 = gapi.auth2.getAuthInstance(); 
     console.log(auth2.isSignedIn.get()); //now this always returns correctly   

    }); 
}); 

Antwort

3

ich es geschafft, das Problem herauszufinden, warum wasn' t den ServerAuthCode von Plugin bekommen. In der Google Developers Console müssen zwei Anmeldeinformationen erstellt werden. Der 1. muss Android sein, dies wird für das Plugin sein und der 2. sollte eine Web App sein, dies ist notwendig, um serverAuthCode zu erreichen.

Der Code sieht wie folgt aus

window.plugins.googleplus.login(
    { 
     'scopes': 'https://www.googleapis.com/auth/drive.file profile', 
     'offline': true, 
     'webApiKey': ‘REVERSED_CODE of Web App Credential’ 
    }, 
    function (obj) { 
     $scope.$apply(function() { 
      $scope.srcImage = obj.imageUrl; 
      $scope.NomeGoogle = obj.displayName; 
     }); 


      var data = $.param({ 
       client_id: 'REVERSED_CODE of Web App Credential', 
       client_secret: 'SECRET_CODE of Web App Credential', 
       grant_type: 'authorization_code', 
       code: obj.serverAuthCode 
      }); 

      var config = { 
       headers : { 
        'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;' 
       } 
      } 

      $http.post("https://www.googleapis.com/oauth2/v3/token", data, config).success(function(data, status) { 
       //data.access_token; 

/** from now you can do use of google API **/ 

      }) 
      .error(function(data, status) { 
       console.log(data); 
       console.log(status); 
      }); 

    }, 
    function (msg) { 
     alert('Erro'); 
     alert('error: ' + msg); 
    } 
); 

Vielen Dank für Ihre Antwort rojobo

+0

Was soll ich in angular2 mit typoskript machen? $ .param ist Jquery-Methode, aber angular2 unterstützt Jquery nicht? –

0

versuchen

window.plugins.googleplus.login(
     { 
      'scopes': 'https://www.googleapis.com/auth/drive.file profile', 
      'offline': true, 
      'cookiepolicy': 'none', 
      'webApiKey': ‘CODE’ 
     } 
0

Zunächst Ich hatte gehofft, die Notwendigkeit cordova-plugin-google zu überspringen und benutzen Sie einfach die gapi innerhalb Cordova/PhoneGap Authentifizierung mit Google zu behandeln, aber es erscheint die gapi client authentication may not work within cordova's file:// protocol.

Die answer from @Joao schickte mich in der richtigen Richtung, aber ich hielt die Invalid cookiePolicy Fehler bekommen, wenn die gapi zu verwenden versuchen, die nach dem Abrufen access_token (das war, weil ich Schritt 2 unten aufgeführten ignoriert, und nach mit dem plugini ich Authentifizieren wurde versehentlich versucht, wieder mit dem gapi zu authentifizieren).

Es gibt einen Schritt (# 3 unten erwähnt), der mir unklar war. Für die Authentifizierung mit Google und dann die gapi in Cordova/PhoneGap verwenden, dies stattdessen arbeitete ...

  1. die cordova-plugin-googleplus verwenden, um kümmern sich um die Authentifizierung und Zugriffstoken Retrieval, nicht die gapi verwenden überhaupt hier
  2. Last der gapi Client-Bibliothek (über den gapi.client.init() Aufruf überspringen und alle normalen gapi Authentifizierungsverfahren)
  3. Bringen Sie den Zugriffstoken wir vom Plugin zum gapi Client bekam, und dann gapi Anrufe tätigen als
  4. benötigt

Schritt # 3 nahm some digging for me to find, und ich meinte die access_token

gapi.client.setToken({access_token:'abc123456xyz'}); 

hinzuzufügen benötigt Sobald der Zugriffstoken an den gapi Client angeschlossen war, ich die gapi in Cordova/Phonegap verwenden:

// Load the YouTube API. 
gapi.client.load('youtube', 'v3', function() { 
    // Do stuff... 
}; 
Verwandte Themen