2012-06-24 10 views
7

मैं वर्तमान में LightOpenID उपयोग कर रहा हूँ उपयोगकर्ता मेरी साइट है, जहां मैं अपने आप अपने उपयोगकर्ता नाम और ईमेल पता निकाल सकते हैं में प्रवेश करने की अनुमति देने के लिए:LightOpenID का उपयोग कर Google संपर्क प्राप्त करना?

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

यहाँ मैं मापदंडों namePerson/first, namePerson/last, और contact/email उपयोग कर रहा हूँ।

मैं समझता हूँ inorder उपयोगकर्ता संपर्कों की सूची प्राप्त करने के लिए, मैं फ़ीड का उपयोग करने के लिए है कि:

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 के साथ ऐसा नहीं कर सकते क्योंकि यह केवल ओपनआईडी प्रोटोकॉल लागू करता है।

ऐसा करने के लिए आपको OAuth (2.0) प्रोटोकॉल की आवश्यकता होगी। the docs प्रति:

बारे में प्राधिकरण प्रोटोकॉल

हम अनुरोध को अधिकृत करने के लिए OAuth 2.0 का उपयोग करें।

आपके आवेदन कुछ असामान्य प्राधिकरण आवश्यकताओं है, तो इस तरह के डेटा का उपयोग (संकर) या डोमेन-व्यापी प्राधिकरण के प्रतिनिधिमंडल (2LO), अनुरोध करने के लिए एक ही समय में से प्रवेश करना तो आप वर्तमान में OAuth 2.0 टोकन का उपयोग नहीं कर सकते हैं । ऐसे मामलों में, आपको इसके बजाय ओएथ 1.0 टोकन और एपीआई कुंजी का उपयोग करना होगा। एपीआई एक्सेस फलक के सरल API एक्सेस अनुभाग में, आप Google API कंसोल में अपने एप्लिकेशन की API कुंजी पा सकते हैं।

+0

इस एलिक्स के लिए धन्यवाद, मैंने इसमें खोदना शुरू कर दिया, लेकिन बहुत लंबा खर्च नहीं करना चाहता था .., मुझे ओथ पर चढ़ने की जरूरत है। – quickshiftin

0

Per the docs:

यहाँ वर्तमान कोड रहा है

सभी संपर्कों

एक उपयोगकर्ता के संपर्क के सभी प्राप्त करने के लिए प्राप्त कर रहा है, के लिए एक अधिकृत GET अनुरोध भेज निम्नलिखित यूआरएल:

https://www.google.com/m8/feeds/contacts/ {हम erEmail}/पूर्ण

उपयोगकर्ता ईमेल के स्थान पर उचित मूल्य के साथ।

नोट: विशेष उपयोगकर्ता ईमेल मान डिफ़ॉल्ट का उपयोग प्रमाणीकृत उपयोगकर्ता को संदर्भित करने के लिए किया जा सकता है।

+0

मैंने कोशिश की है कि पहले से ही LightOpenID का उपयोग कर रहा है, और मुझे बस खाली खाली सरणी मिलती है। मैंने वर्तमान में ऊपर दिए गए मूल प्रश्न में पूर्ण कोड शामिल किया है। – oshirowanen

+0

काफी मेला, मैं इसे एक करीबी रूप दे दूंगा – quickshiftin

+0

यह उत्तर सही है, लेकिन सवाल गलत है। जो, मुझे लगता है, दोनों गलत है। : पी –

0

यह डॉक्स के अनुसार संभव हो जाना चाहिए: https://developers.google.com/accounts/docs/OpenID

OpenID + OAuth हाइब्रिड प्रोटोकॉल वेब डेवलपर्स के लिए एक OAuth प्रमाणीकरण अनुरोध के साथ एक OpenID अनुरोध गठबंधन की सुविधा देता है। यह एक्सटेंशन उन वेब डेवलपर्स के लिए उपयोगी है जो ओपनआईडी और ओएथ दोनों का उपयोग करते हैं, विशेष रूप से यह उपयोगकर्ताओं के लिए दो बार की बजाय उनकी स्वीकृति का अनुरोध करके प्रक्रिया को सरल बनाता है।

संबंधित मुद्दे