2016-05-06 19 views
1

ich das folgende Skript verwendet hatte Google-AuthentifizierungGoogle SignIn Anmelden Skript nicht funktioniert

//google auth code 
gapi.load('auth2', function() {//load in the auth2 api's, without it gapi.auth2 will be undefined 
    gapi.auth2.init(
     { 
      client_id: '1063305095705-k68gpfhi46tbu6kv8e8tidc751hte5pb.apps.googleusercontent.com' 
     } 
    ); 
    var GoogleAuth = gapi.auth2.getAuthInstance();//get's a GoogleAuth instance with your client-id, needs to be called after gapi.auth2.init 
    $scope.onLogInButtonClick=function(){//add a function to the controller so ng-click can bind to it 
     GoogleAuth.signIn().then(function(response){//request to sign in 
      console.log(response); 
      console.log(response.wc.wc); 
      console.log(response.wc.hg); 
      console.log(response.wc.Ph); 
     }); 
    }; 
}); 

Ich versuche zu verwenden, das in einer anderen Anwendung und immer die folgenden Fehler zu integrieren: -

gapi.auth2.ExternallyVisibleError: gapi.auth2 has been initialized with 
different options. Consider calling gapi.auth2.getAuthInstance() 
instead of gapi.auth2.init(). 

Ich habe auch

<script src="https://apis.google.com/js/platform.js?key=xxxxxxxxx"></script> 

alles scheint in Ordnung, verstehe nicht, warum es tun Es funktioniert nicht ..

Antwort

1

Nächster Code sollte helfen: Ich habe zwei Stunden damit verbracht, dies zu lösen, und weil ich den gleichen Fehler erhielt, entschied ich mich, OnLoad-Funktion mit benutzerdefinierten Google Anmelden Schaltfläche zu verwenden.

Einige Punkte, die wahrscheinlich notwendig sind, wenn wir Profildaten von den Benutzern nicht wollen, bekommen ...

  • Verwendung onload Funktion wie in Code unten, wenn asynchrones Verfahren aufzuschieben mit:

https://apis.google.com/js/platform.js? onload = onLoadCallback

  • machen Ihre eigenen Zeichen in Schaltfläche mit Click-Ereignis auf Signin Funktion
<a onclick="signIn();">Google Sign In</a> 

Voll Lösung ist hier:

<script src="https://apis.google.com/js/platform.js?onload=onLoadCallback" async defer></script> 

<meta name="google-signin-client_id" content="YOUR_ID.apps.googleusercontent.com"/> 

<!-- I have commented default google sign in button because it didn't allow me to make my own gapi.load --> 
<!--<div class="g-signin2" data-onsuccess="ConSignIn"></div>--> 

<a onclick="signIn();">Google Sign In</a> 

<script> 

    function onLoadCallback() { 

     console.log('onLoadCallback'); 
     gapi.load('auth2', function() { 
     gapi.auth2.init({ 
      client_id: 'YOUR_ID.apps.googleusercontent.com', 
      //This two lines are important not to get profile info from your users 
      fetch_basic_profile: false, 
      scope: 'email' 
     });   
     });  
    } 

    function signIn() { 
     console.log('I am passing signIn') 

     var auth2 = gapi.auth2.getAuthInstance();   
      // Sign the user in, and then retrieve their ID. 
      auth2.signIn().then(function() { 
      console.log(auth2.currentUser.get().getId());    
      });   
    } 

</script> 
Verwandte Themen