2012-06-24 20 views
7

ich derzeit LightOpenID bin mit den Benutzern zu ermöglichen, in meiner Website einzuloggen, wo ich automatisch ihren Benutzernamen und E-Mail-Adresse extrahieren:Google Kontakte mit LightOpenID abrufen?

$openid->required = array('namePerson/first', 'namePerson/last', 'contact/email'); 
$openid->identity = 'https://www.google.com/accounts/o8/id'; 

Hier verwende ich die Parameter namePerson/first, namePerson/last und contact/email.

Ich verstehe, dass inorder eine Liste von Benutzern Kontakte zu bekommen, ich habe das Futter zu verwenden:

https://www.google.com/m8/feeds 

Allerdings kann ich nicht scheinen, um herauszufinden, welche Parameter ich dafür verwenden?

Wenn ich die Parameterzeile vollständig entferne, bekomme ich nur ein leeres Array zurück.

Kann mir bitte jemand helfen, herauszufinden, welche Parameter ich brauche, um die Kontakte zu bekommen?

Hier ist der aktuelle Code ist, ich habe:

<?php 
    require '/var/www/libraries/openid.php'; 

    try { 

     $openid = new LightOpenID; 

     if(!$openid->mode) { 

      //$openid->required = array('gd/fullName'); 
      $openid->identity = 'https://www.google.com/m8/feeds/contacts/oshirowanen.y%40gmail.com/full'; 
      header('Location: ' . $openid->authUrl()); 
      exit; 

     } elseif($openid->mode == 'cancel') { 

      echo "cancelled"; 
      exit; 

     } else { 

      if ($openid->validate()) { 

       $returned = $openid->getAttributes(); 
       print_r($returned); 

       exit; 

      } else { 

       echo "something is wrong"; 
       exit; 

      } 

     } 

    } catch(ErrorException $e) { 

     echo $e->getMessage(); 

    } 
?> 
+1

Hinzugefügt den ganzen Code, den ich derzeit oben habe. – oshirowanen

Antwort

5

Mit LightOpenID ist das nicht möglich, da es nur das OpenID-Protokoll implementiert.

Sie benötigen dazu das OAuth (2.0) -Protokoll. Per the docs:

Über Berechtigungsprotokolle

Wir empfehlen Anfragen unter Verwendung von OAuth 2.0 zu autorisieren.

Wenn Ihre Anwendung bestimmte ungewöhnliche Zulassungsanforderungen hat, wie als anfordernden Datenzugriff (hybrid) oder domänenweite Übertragung von Befugnissen (2LO) zur gleichen Zeit anmelden, dann können Sie nicht verwenden derzeit OAuth 2.0-Token . In solchen Fällen müssen Sie stattdessen OAuth 1.0-Token und einen API-Schlüssel verwenden. Sie finden den API-Schlüssel Ihrer Anwendung in der Google-API-Konsole im Abschnitt "Einfacher API-Zugriff" des Bereichs API-Zugriff.

+0

Danke für diesen Alix, ich fing an zu graben, aber wollte nicht zu lange verbringen .., ich muss auf OAuth hochfahren. – quickshiftin

0

Per the docs:

alle Kontakte Suchen

Um alle eines Benutzers abzurufen, eine autorisierte GET-Anfrage an die schicken folgende URL:

https://www.google.com/m8/feeds/contacts/ {us erEmail}/full

Mit dem entsprechenden Wert anstelle von userEmail.

Hinweis: Der Standardwert userEmail-Standardwert kann verwendet werden, um auf den authentifizierten Benutzer zu verweisen.

+0

Ich habe versucht, dass bereits LightOpenID verwendet, und ich bekomme nur ein leeres Array zurück. Ich habe den vollständigen Code, den ich derzeit in der ursprünglichen Frage habe, eingefügt. – oshirowanen

+0

fair genug, ich werde es genauer betrachten – quickshiftin

+0

Diese Antwort ist richtig, aber die Frage ist falsch. Was, denke ich, beide falsch macht. : P –

0

Es sollte möglich sein, wie pro der Dokumentation: https://developers.google.com/accounts/docs/OpenID

OpenID + OAuth Hybrid-Protokoll kann Web-Entwickler kombinieren, um eine OpenID Anforderung mit einer OAuth Authentifizierungsanforderung. Diese Erweiterung ist für Webentwickler nützlich, die sowohl OpenID als auch OAuth verwenden, insbesondere dadurch, dass sie den Prozess für Benutzer vereinfachen, indem sie ihre Genehmigung einmal statt zweimal anfordern.

Verwandte Themen