2015-11-18 10 views
5

मैं इस का उपयोग कर:मैं नए माइक्रोसॉफ्ट ग्राफ एपीआई के साथ एक ऑथ टोकन कैसे बना सकता हूं?

https://github.com/Azure-Samples/active-directory-php-graphapi-web.git 

ग्राफ एपीआई, जो काम करता है का उपयोग करने की। मेरा एज़ूर एडी पंजीकृत एप्लिकेशन निर्देशिका में उपयोगकर्ताओं की एक सूची प्राप्त करने के लिए एपीआई से पूछताछ करने में सक्षम है।

लेकिन अब मैं निर्देशिका में किसी उपयोगकर्ता के लिए फ़ोल्डर सूचीबद्ध करना चाहता हूं। यह पृष्ठ

http://graph.microsoft.io/docs 

कहते यूआरएल होना चाहिए:

https://graph.microsoft.com/v1.0/me/drive/root/children 

जब मैं का उपयोग करें कि मेरी REST कॉल में यूआरएल, मैं

"code": "InvalidAuthenticationToken", 
"message": "CompactToken parsing failed with error code: -2147184105" 

, भावना बनाता है इसे से एक टोकन हो रही है

https://graph.windows.net 

तो, मैं खो गया हूँ। एपीआई के कई अलग-अलग संस्करण हैं, उपभोक्ता ग्रेड ऑनड्राइव (पूर्व में स्काइडाइडिव) से, पहला ग्राफ एपीआई (जिसे मैं https://graph.windows.net के माध्यम से एक्सेस करता हूं), कार्यालय 365 एपीआई (जिसे मैं https://login.microsoftonline.com के माध्यम से एक्सेस करता हूं) और अब ग्राफ एपीआई (पूर्व में सार्वभौमिक एपीआई https://graph.microsoft.com) मुझे नहीं पता कि सही जानकारी देखने के लिए कहां से शुरू करना है।

मैं फिलहाल PHP में काम कर रहा हूं, और मुझे यकीन है कि समर्थित प्लेटफ़ॉर्म की माइक्रोसॉफ्ट की सूची पर बहुत कम होने वाला है, लेकिन किसी भी दिशा में टोकन पीढ़ी के उपयोग के बारे में कोई भी तरीका ओपी 5 एपीआई बनाम नवीनतम एपीआई में कैसे काम करता है बनाम अन्य ग्राफ एपीआई (graph.windows.net पर) की सराहना की जाएगी।

क्या कोई और उलझन में है जैसा मैं हूं? क्या कोई केंद्रीय संदर्भ है जो इन एपिस और उन तक पहुंचने के बीच के सभी अंतर बताता है?

उत्तर

4

माइक्रोसॉफ्ट ग्राफ आपको Office 365 और Azure AD सेवाओं द्वारा प्रदान किए गए डेटा तक पहुंचने के लिए एक एंडपॉइंट (और टोकन अधिग्रहण) प्रदान करना चाहिए। अधिक जानकारी के लिए कृपया https://graph.microsoft.com पर जाएं - लेकिन कृपया v1.0 संस्करण का उपयोग करें क्योंकि यह GA संस्करण है जो उत्पादन सेवाओं के लिए उपयुक्त है।

कोई उपयोगकर्ता यूआई के साथ एक सेवा ऐप के बारे में आपके प्रश्न के लिए - आप क्लाइंट_credential प्रवाह का उपयोग करके केवल ऐप-एक्सेस पहुंच प्राप्त कर सकते हैं। (यह वर्तमान में माइक्रोसॉफ़्ट ग्राफ प्रलेखन में प्रलेखित नहीं है, लेकिन यह समर्थित है और elsewhere का वर्णन किया गया है - बस संसाधन को https://graph.microsoft.com/ पर सेट करें)। Azure प्रबंधन पोर्टल में आपको "एप्लिकेशन अनुमतियां" चुननी होगी जिन्हें आपके ऐप की भी आवश्यकता है। वर्तमान में मेल संसाधनों तक ऐप-केवल पहुंच समर्थित है, लेकिन ऐप केवल एक ड्राइव संसाधनों तक पहुंच (माइक्रोसॉफ्ट ग्राफ के माध्यम से) समर्थित नहीं है। हम जल्द ही इसे खोलने की तलाश करेंगे।

आशा इस मदद करता है,

+0

पर कर सकते हैं अब यह कुछ है जो मैं अपने दांतों को डुबो सकता हूं, बहुत बहुत धन्यवाद। – stu

+0

क्या ऐप केवल समर्थित समूहों के कैलेंडर संसाधनों तक पहुंच है? –

+0

@ डैन केर्शो क्या आप इस प्रश्न के साथ मदद कर सकते हैं http://stackoverflow.com/questions/41754060/microsoft-office-api-invalidauthenticationtoken-compacttoken-parsing-failed-with कृपया? – WowBow

3

https://login.microsoftonline.com का अंतराल एज़ूर एडी प्रमाणीकरण एंडपॉइंट है जो उपयोगकर्ताओं के लिए एसएसओ पृष्ठ प्रदान करता है और & प्रमाणीकृत प्रमाणीकरण कोड प्राप्त करता है।

https://graph.microsoft.com जैसे अन्य लोग संसाधन संसाधन हैं जो आरईएसटी एपीआई पर बनाया गया है और माइक्रोसॉफ्ट से संसाधन और सेवाएं प्रदान करता है।

विशेष रूप से, https://graph.windows.net समाप्ति बिंदु को, आधिकारिक साइट पर विवरण है:

Azure सक्रिय निर्देशिका ग्राफ़ एपीआई REST API का अंतिम बिंदुओं के माध्यम से Azure सक्रिय निर्देशिका के लिए कार्यक्रम संबंधी पहुँच प्रदान करता है। ऐप्स उपयोगकर्ता डेटा, निर्देशिका, और संगठनात्मक संपर्कों जैसे निर्देशिका डेटा और निर्देशिका ऑब्जेक्ट्स पर क्रिएट, रीड, अपडेट और डिलीट (सीआरयूडी) संचालन करने के लिए एज़ूर एडी ग्राफ एपीआई का उपयोग कर सकते हैं। और https://graph.mircosoft.com एक एकीकृत एपीआई है जिसमें अन्य माइक्रोसॉफ्ट सेवाओं जैसे आउटलुक, वनड्राइव, वनोट, प्लानर और ऑफिस ग्राफ से एपीआई भी शामिल हैं, सभी एक एकल एक्सेस टोकन के साथ एक ही एंडपॉइंट के माध्यम से पहुंचे हैं।

अधिक जानकारी के लिए AD Graph REST का संदर्भ लें।

एज़ूर एडी के माध्यम से कार्यालय 365 को एकीकृत करने के लिए, आपको यह जांचना होगा कि आपके पास कार्यालय 365 किरायेदार है और कार्यालय के आपके व्यवस्थापक उपयोगकर्ता 365 किरायेदार के पास Azure AD पर पहुंच अनुमति है।Office 365 एकीकृत API को एकीकृत करने के चरण-दर-चरण मार्गदर्शिका के लिए आप Deep Dive into the Office 365 Unified API देख सकते हैं।

इसके अलावा, आप PHP उदाहरण बनाने के लिए Get started with Office 365 APIs powered by Microsoft Graph का संदर्भ ले सकते हैं।

+0

पढ़ने के लिए धन्यवाद जानकारी के लिए धन्यवाद, मैं उल्लेख करना भूल गया, मैं एक सर्वर अनुप्रयोग लिख रहा हूं, कोई उपयोगकर्ता यूआई इंटरैक्शन नहीं है। मेरे पास एडी तक व्यवस्थापक पहुंच है, मैं उपयोगकर्ताओं की सूची प्राप्त करने के लिए ग्राफ़ एपीआई से पूछताछ कर सकता हूं। अब मैं उन उपयोगकर्ताओं के माध्यम से पुन: प्रयास करना चाहता हूं और उनके मेल को पढ़ना चाहता हूं और उनकी ऑनड्राइव फाइलों को सूचीबद्ध करना चाहता हूं। अगर मैं सही ढंग से समझता हूं, oed5 oi5 api है और मेल ग्राफ एपीआई है। लेकिन यदि संभव हो तो मैं सभी के लिए नए सार्वभौमिक एपीआई का उपयोग करना चाहता हूं। क्या यह? – stu

+0

माइक्रोसॉफ़्ट ग्राफ एपीआई को एकीकृत करने के लिए, आपको अभी भी अपने एप्लिकेशन व्यवस्थापक के लिए अधिकृत करने की आवश्यकता है। और आपकी आवश्यकताओं के लिए विशिष्ट, मुझे लगता है कि यह सकारात्मक है। जैसा कि मैंने http://graph.microsoft.io/docs/api-reference/beta/resources/drive पर onedrive एपीआई पाया और http://graph.microsoft.io/docs/api-reference/beta/ पर मेल एपीआई भी पोस्ट किया संसाधन/संदेश। इसके अतिरिक्त, आप इन एपीआई का परीक्षण [एपीआई एक्सप्लोरर] (https://graphexplorer2.azurewebsites.net/) –

0

मैं वास्तव में कड़ी मेहनत की कोशिश की है लाइव दृष्टिकोण संपर्कों को आयात करने के लिए। लेकिन आर & डी के कुछ दिनों के बाद https://dev.office.com/blogs/outlook-rest-api-v1-0-office-365-discovery-and-live-connect-api-deprecation मिला है जिसने मुझे माइक्रोसॉफ्ट ग्राफ पर स्विच करने के लिए बनाया है। मैंने एज़ूर दस्तावेज और अन्य सामानों के साथ भी प्रयास किया है, लेकिन मुझे यह बहुत भ्रमित लगता है लेकिन फिर भी मैं इसके साथ स्पष्ट नहीं था। इसलिए मैं निम्नलिखित php में लागू किया है जो सौभाग्य से सफल साबित हुआ। बस निम्न चरणों का पालन करें: 1) https://apps.dev.microsoft.com में अपना आवेदन बनाएं ए) एक नया पासवर्ड जेनरेट करें। एप्लिकेशन आईडी और पासवर्ड को अपने साथ सहेजें। बी) वेब के रूप में प्लेटफॉर्म जोड़ें और https के साथ रीडायरेक्ट यूआरएल जोड़ें क्योंकि केवल https का उपयोग किया जा सकता है और http लागू नहीं है। सी) अग्रिम विकल्पों के तहत लाइव एसडीके समर्थन की जांच करें और सहेजें।

2) url में दायरे को संपर्क के रूप में पास करें। जैसा कि हमें साइन इन किए गए उपयोगकर्ता के संपर्कों की आवश्यकता है।

$client_id="YOUR_CLIENT_ID"; 
$redirect_uri = SiteUrl.'hotmail-contact'; 
      $url="https://login.microsoftonline.com/common/oauth2/v2.0/authorize? 
        client_id=".$client_id." 
        &response_type=code 
        &redirect_uri=".$redirect_uri." 
        &response_mode=query 
        &scope=offline_access%20user.read%20mail.read%20contacts.read 
        &state=12345"; 

3) सफल प्रमाणीकरण के बाद, यह ऑथ कोड वापस कर देगा। अब कोड प्राप्त करने के बाद हम कर्ल पोस्ट अनुरोध द्वारा टोकन के लिए अनुरोध https://login.live.com/oauth20_token.srf पर postfields साथ के रूप में

$fields=array(
     'code'=> urlencode($auth_code), 
     'client_id'=> urlencode($client_id), 
     'client_secret'=> urlencode($client_secret), 
     'redirect_uri'=> urlencode($redirect_uri), 
     'grant_type'=> urlencode('authorization_code') 
    ); 

4) संपर्कों को लाने के लिए

$ url प्राप्त = 'https://graph.microsoft.com/v1.0/me/contacts' हम भी आवेदन कर सकते हैं फिल्टर उन्हें

अब paramaters यूआरएल और टोकन के माध्यम से कर्ल का अनुरोध

public function curl_use_token($url,$token) { 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); 
    // curl_setopt($ch,CURLOPT_HTTPHEADER,array('HeaderName: HeaderValue')); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization:Bearer '.$token)); 
    // curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization", "Bearer " + $token)); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 

    $data = curl_exec($ch); 
    curl_close($ch); 
    // print(gettype($data)); 
    // print($data); 
    return $data; 
    } 

5) डेटा प्राप्त करने के बाद, डेटा लौटाया गया शुद्ध जेसन प्रारूप में नहीं है, इसलिए हम रेगेक्स को लागू करके डेटा से केवल एक जेसन भाग निकाल सकते हैं और इसे डीकोड करने के बाद हम इसका उपयोग कर सकते हैं।

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