7

मैं Outlook-SDK-Android पर आधारित एक एंड्रॉइड ऐप विकसित कर रहा हूं। ऐप पुनर्प्राप्ति, पुस्तकें और घटनाओं को हटाने के लिए Outlook Calendar REST API के साथ बातचीत करता है (कोड उदाहरण here और here देखें)। अब मुझे किसी और के कैलेंडर को पढ़ने की जरूरत है और मुझे अन्य उपयोगकर्ताओं की ओर प्रतिनिधि पहुंच (author permission level) के साथ Office365 खाता प्रदान किया गया है।आउटलुक - अन्य उपयोगकर्ता का कैलेंडर पढ़ें

मैंने new portal पर प्रदत्त खाते का उपयोग करके अपना ऐप पंजीकृत कर लिया है। मेरी ऐप में मैं "https://outlook.office.com/Calendars.ReadWrite" दायरे का उपयोग करता हूं। जब मैं किसी अन्य उपयोगकर्ता के कैलेंडर पढ़ने की कोशिश

(गुंजाइश एक Office REST Client for Android OutlookClient, एक साझा ग्राहक ढेर orc-for-android द्वारा प्रदान प्रारंभ करने में com.microsoft.aad.adal.AuthenticationContext.acquireToken() में प्रयोग किया जाता है), जिस पर मेरे पास प्रतिनिधि पहुंच है, मुझे बस 403 प्रतिक्रिया मिली है:

{ 
    "error": { 
    "code": "ErrorAccessDenied", 
    "message": "Access is denied. Check credentials and try again." 
    } 
} 

कोई मदद?

क्या यह एपीआई की सीमा है? यदि ऐसा है तो निम्नलिखित विधि आमंत्रण श्रृंखला क्यों प्रदान की जाती है?

outlookClient.getUsers() 
      .getById("[email protected]") 
      .getCalendarView() 

अद्यतन:

ऐसा लगता है वहाँ प्रगति में काम करता है कि इस परिदृश्य के रूप में यहां सूचना की अनुमति देगा, कर रहे हैं की तरह: Office 365 REST API - Access meeting rooms calendars

तो अगर उस दिशा में प्रगति की गई है मैं प्राप्त कर सकते हैं मेरा लक्ष्य "admin service app" का उपयोग किए बिना? (Office 365 API or Azure AD Graph API - Get Someone Elses Calendar देखें)

क्या मैं here सुझाए गए बुनियादी प्रमाणीकरण का उपयोग कर सकता हूं?

+0

ऐसा लगता है कि Outlook API के लिए प्रतिनिधि पहुंच इस महीने के अंत में उपलब्ध होगी - टिप्पणी का उत्तर देखें .. http://stackoverflow.com/a/30596328/4317945 –

उत्तर

4

कैलेंडर प्रतिनिधिमंडल एक्सचेंज, ग्राफ एपीआई और आउटलुक एपीआई की एक विशेषता है जो उपयोगकर्ता को प्रतिनिधि कैलेंडर तक पहुंचने की अनुमति नहीं देता है। वर्तमान में, वैकल्पिक कार्यवाही ईडब्ल्यूएस का उपयोग किया जा सकता है।

static void DelegateAccessSearchWithFilter(ExchangeService service, SearchFilter filter) 
{ 
    // Limit the result set to 10 items. 
    ItemView view = new ItemView(10); 

    view.PropertySet = new PropertySet(ItemSchema.Subject, 
             ItemSchema.DateTimeReceived, 
             EmailMessageSchema.IsRead); 

    // Item searches do not support deep traversal. 
    view.Traversal = ItemTraversal.Shallow; 

    // Define the sort order. 
    view.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Descending); 

    try 
    { 
     // Call FindItems to find matching calendar items. 
     // The FindItems parameters must denote the mailbox owner, 
     // mailbox, and Calendar folder. 
     // This method call results in a FindItem call to EWS. 
     FindItemsResults<Item> results = service.FindItems(
     new FolderId(WellKnownFolderName.Calendar, 
      "[email protected]"), 
      filter, 
      view); 

     foreach (Item item in results.Items) 
     { 
      Console.WriteLine("Subject: {0}", item.Subject); 
      Console.WriteLine("Id: {0}", item.Id.ToString()); 
     } 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine("Exception while enumerating results: { 0}", ex.Message); 
    } 
} 

private static void GetDeligateCalendar(string mailAddress, string password) 
{ 
    ExchangeService service = new ExchangeService(); 

    service.Credentials = new WebCredentials(mailAddress, password); 

    service.TraceEnabled = true; 
    service.TraceFlags = TraceFlags.All; 

    service.AutodiscoverUrl(mailAddress, RedirectionUrlValidationCallback); 

    SearchFilter sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(AppointmentSchema.Subject, "Discuss the Calendar REST API")); 
    DelegateAccessSearchWithFilter(service, sf); 
} 

और अगर आप इस सुविधा का समर्थन करने के लिए आउटलुक और ग्राफ़ एपीआई चाहते हैं, आप नीचे दिए गए लिंक से Office डेवलपर टीम से संपर्क करने की कोशिश कर सकते हैं::

https://officespdev.uservoice.com/

और यहाँ आपके संदर्भ के लिए एक नमूना है
+0

संकेत के लिए धन्यवाद। मैं कोशिश करूँगा .. –

+0

एंड्रॉइड विश्वसनीय/स्थिर के लिए ईडब्ल्यूएस है? (https://github.com/faisons/EWS-for-Android, https://github.com/OfficeDev/ews-java-api) धन्यवाद –

+1

मुझे भी लगता है कि ईडब्ल्यूएस यहां जाने का तरीका है। हकीकत में, ओ 365 एपीआई वास्तव में ईडब्लूएस के शीर्ष पर सिर्फ एक रैपर है इसलिए स्थिरता/कार्यक्षमता में कोई नुकसान नहीं होना चाहिए। ईडब्ल्यूएस प्रतिनिधि पहुंच पर कुछ और जानकारी यहां दी गई है: https://msdn.microsoft.com/en-us/library/office/dn641956(v=exchg.150).aspx – jstruzik

1

FindMeetingTimes वर्तमान में पूर्वावलोकन में है! विवरण देखने के लिए, इस लिंक का उपयोग करें और फिर आलेख के बीटा संस्करण (मुख्य कॉलम में शीर्ष दाएं) को देखने के लिए इसे बदलें: https://msdn.microsoft.com/en-us/office/office365/api/calendar-rest-operations#Findmeetingtimespreview

आलेख से नीचे विवरण, लेकिन नवीनतम प्राप्त करने के लिए लिंक का उपयोग करें:

ढूँढें मीटिंग समय (पूर्वावलोकन)

बैठक के आयोजक और प्रतिभागी उपलब्धता, और समय या स्थान की कमी के आधार पर समय सुझावों का पता लगाएं।

यह ऑपरेशन वर्तमान में पूर्वावलोकन में है और केवल बीटा संस्करण में उपलब्ध है।

सभी समर्थित परिदृश्य FindMeetingTimes क्रिया का उपयोग करते हैं।FindMeetingTimes अनुरोध निकाय में पैरामीटर के रूप में निर्दिष्ट बाधाओं को स्वीकार करता है, और आयोजक और उपस्थित लोगों के प्राथमिक कैलेंडर में नि: शुल्क/व्यस्त स्थिति की जांच करता है। प्रतिक्रिया में बैठक के समय के सुझाव शामिल होते हैं, जिनमें से प्रत्येक को मीटिंगटाइम कैंडीडेट के रूप में परिभाषित किया जाता है, जिसमें प्रतिभागियों को औसतन 50% मौका या उपस्थित होने के लिए आत्मविश्वास का औसत स्तर होता है।

+0

FindMeetingTimes मुझे अन्य उपयोगकर्ताओं की बैठक करने की अनुमति नहीं देता है लेकिन केवल उपलब्ध समय। धन्यवाद, वैसे भी उपयोगी –

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