2012-06-24 31 views
7

Tôi hiện đang sử dụng LightOpenID cho phép người dùng đăng nhập vào trang web của tôi, nơi tôi có thể tự động trích xuất tên đăng nhập và địa chỉ email của họ:Tải Danh bạ Google bằng LightOpenID?

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

Ở đây tôi đang sử dụng các thông số namePerson/first, namePerson/last, và contact/email.

Tôi hiểu rằng inorder để có được một danh sách các địa chỉ liên lạc của người dùng, tôi phải sử dụng thức ăn chăn nuôi:

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

Tuy nhiên, tôi dường như không thể tìm ra thông số tôi cần phải sử dụng cho việc này?

Nếu tôi loại bỏ hoàn toàn dòng paramter, tôi chỉ nhận được một mảng trống.

Bất kỳ ai có thể vui lòng giúp tôi tìm ra thông số nào tôi cần để có được liên hệ không?

Đây là mã hiện tại tôi có:

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

Đã thêm tất cả mã tôi hiện có ở trên. – oshirowanen

Trả lời

5

Bạn không thể làm điều đó với LightOpenID vì nó chỉ thực hiện giao thức OpenID.

Bạn sẽ cần giao thức OAuth (2.0) để thực hiện điều đó. Mỗi the docs:

Về uỷ quyền giao thức

Chúng tôi khuyên bạn sử dụng OAuth 2.0 cho phép yêu cầu.

Nếu ứng dụng của bạn có một số yêu cầu uỷ quyền không bình thường, như cách đăng nhập vào cùng lúc với yêu cầu truy cập dữ liệu (hybrid) , lĩnh vực rộng ủy quyền (2LO), sau đó bạn có thể không hiện đang sử dụng thẻ OAuth 2.0 . Trong những trường hợp như vậy, bạn phải sử dụng mã thông báo OAuth 1.0 và khóa API. Bạn có thể tìm thấy khóa API của ứng dụng trong Bảng điều khiển API của Google, trong phần Truy cập API đơn giản của ngăn truy cập API .

+0

Cảm ơn vì Alix này, tôi bắt đầu đào sâu vào nó, nhưng không muốn tốn quá nhiều thời gian .., tôi cần phải tăng cường OAuth. – quickshiftin

0

Per the docs:

Lấy tất cả các địa chỉ liên lạc

Để lấy tất cả các địa chỉ liên lạc của người dùng, gửi một yêu cầu GET ủy quyền đến URL sau:

https://www.google.com/m8/feeds/contacts/ {us erEmail}/đầy đủ

Với giá trị thích hợp thay cho userEmail.

Lưu ý: Giá trị mặc định của người dùng đặc biệtMã thư có thể được sử dụng để tham khảo người dùng được xác thực.

+0

Tôi đã thử đã sử dụng LightOpenID và tôi chỉ nhận được một mảng trống. Tôi đã bao gồm mã đầy đủ mà tôi hiện có trong câu hỏi ban đầu ở trên. – oshirowanen

+0

đủ công bằng, tôi sẽ cung cấp cho nó một cái nhìn gần hơn – quickshiftin

+0

Câu trả lời này là chính xác, nhưng câu hỏi là sai. Mà, tôi nghĩ rằng, làm cho cả hai người trong số họ sai. : P –

0

Nó nên có thể theo các tài liệu: https://developers.google.com/accounts/docs/OpenID

OpenID + OAuth lai giao thức cho phép các nhà phát triển web kết hợp một yêu cầu OpenID với một yêu cầu xác thực OAuth . Tiện ích mở rộng này hữu ích cho các nhà phát triển web sử dụng cả OpenID và OAuth, đặc biệt ở chỗ nó đơn giản hóa quy trình cho người dùng bằng cách yêu cầu phê duyệt của họ một lần thay vì hai lần.

Các vấn đề liên quan