2016-07-26 40 views
0

Ich versuche, Google SignIn zu my website implementieren hinzuzufügen, aber ich kann nicht anythig sehen, aber wenn ich de Seite Quellcode sehe, sehe ich diesen Fehler:Fehler beim Versuch, Google SignIn

Fatal error: Call to a member function createAuthUrl() on a non-object in /home/u289995868/public_html/es/php/glogin/app/classes/GoogleAuth.php on line 26


der Code dieser Datei:

<?php 
class GoogleAuth 
{ 
    protected $client; 

    public function __construct(Google_Client $googleClient = null) 
    { 
     $this->client = $googleClient; 

     if($this->client) 
     { 
      $this->client->setClientId('xxxxxxxx'); 
      $this->client->setClientSecret('xxxxxxxx'); 
      $this->client->setRedirectUri('http://barreeeiroo.ga/es/php/glogin/index.php'); 
      $this->client->setScopes('email'); 
     } 
    } 

    public function isLoggedIn() 
    { 
     return isset($_SESSION['access_token']); 
    } 

    public function getAuthUrl() 
    { 
     return $this->client->createAuthUrl(); 
    } 
} 
?> 


Index.php Code:

<?php 
require_once 'app/init.php'; 
$googleClient = new Google_Client(); 
$auth = new GoogleAuth(); 
?> 

... Here there is some code for navbar and other, not important 

<h1>Prueba de Login de Google</h1> 
<?php if(!$auth->isLoggedIn()): ?> 
    <a href="<?php echo $auth->getAuthUrl(); ?>">Iniciar Sesión</a> 
<?php else: ?> 
    Ya has iniciado sesión    
<?php endif; ?> 


Wenn Sie den Fehler sehen möchten, gehen Sie zu this website und View Source Code

+0

Wo Sie das Objekt instanziieren ?(Die '$ auth'-Variablendefinition) – FirstOne

+0

EDIT: Ich habe jetzt enthalten, Frage, @FirstOne –

+0

Dank @FirstOne Es funktioniert –

Antwort

0

Sie haben von

$auth = new GoogleAuth(); 
ändern

bis


Wenn Sie den Konstruktor von GoogleAuth überprüfen:

public function __construct(Google_Client $googleClient = null) 

Sie werden feststellen, dass es standardmäßig null sehen. Dies bedeutet, dass der Parameter $googleClientnull lautet, wenn nichts an den Konstruktor übergeben wird.


Schnell RDD:

  • {erfordern und instanziiert}
  • eine Instanz GoogleAuth keine Argumente erstellen vorbei und setzen Sie das Objekt in $auth;
    • Da der Parameter Standardwerte null, $googleClientnull ist;
    • Set GoogleAuth::$client zu $googleClient sein Wert (so, null);
  • {überprüfen Sachen}
  • Anruf GoogleAuth::getAuthUrl();
    • Anruf GoogleAuth::$client->createAuthUrl(); (Da GoogleAuth::$clientnull ist, es ist fast wie Sie null->createAuthUrl() fordern;.

Dieser letzte Schritt macht es einfacher, um den Fehler zu verstehen

Verwandte Themen