2012-06-24 94 views
7

我目前使用LightOpenID允許用戶登錄到我的網站,在那裏我可以自動提取他們的用戶名和電子郵件地址:使用LightOpenID獲取Google通訊錄?

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

這裏我使用的參數namePerson/firstnamePerson/lastcontact/email

我明白序獲取用戶的聯繫人列表,我不得不使用飼料:

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

不過,我似乎無法找出哪些參數,我需要使用此?

如果我完全去除放慢參數線,我只是得到一個空數組回來。

任何人都可以請幫我找出我需要哪些參數來獲取聯繫人?

下面是當前代碼我有:

<?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

添加了我目前擁有的所有代碼。 – oshirowanen

回答

5

你不能用LightOpenID做到這一點,因爲它只實現OpenID協議。

您將需要OAuth(2.0)協議來做到這一點。每the docs

關於授權協議

我們建議使用OAuth 2.0來授權請求​​。

如果你的應用有某些特殊授權要求, 如在同一時間爲請求數據訪問(混合)的權威 或全域委託(2LO),登錄則無法 目前使用OAuth 2.0令牌。在這種情況下,您必須改用 OAuth 1.0令牌和API密鑰。您可以在Google API控制檯中找到應用程序的API 密鑰,位於 API訪問面板的簡單API訪問部分。

+0

感謝這個Alix,我開始深入研究它,但不想花費太長時間..,我需要加強OAuth。 – quickshiftin

0

Per the docs

檢索所有聯繫人

檢索所有的用戶的聯繫人,發送授權的GET請求 到以下網址:

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

用適當的值代替userEmail。

注意:特殊的用戶電子郵件值默認值可用於引用經過身份驗證的用戶 。

+0

我已經嘗試過使用LightOpenID,並且我只是返回一個空數組。我已經在上面的原始問題中包含了我目前的完整代碼。 – oshirowanen

+0

夠公平的,我會仔細看看 – quickshiftin

+0

這個答案是正確的,但問題是錯誤的。我認爲,這使他們都錯了。 :P –

0

應該可以按照文檔: https://developers.google.com/accounts/docs/OpenID

的OpenID + OAuth的混合協議允許網絡開發者與一個OAuth 認證請求結合一個OpenID請求。此擴展對於同時使用OpenID和OAuth的Web開發人員非常有用,特別是通過請求一次而不是兩次批准,簡化了用戶的過程。