I've got to write some tool that will track meetings among the whole company. To do this I need to have the information on all appointments from all folders of all users. EWS API seems to only work with one user at the time and requires user credentials (did I miss something important here? ). Is there other options or a strategies to implement this approach?
P.S. I also found that there is OAuth that probably can help me with this task, but I didn't find any information whether it works the way I need it with Exchange Server 2013
Related
I have a need to connect to Office 365 in order to get some scheduling appointment for a room, make a book on a room if is available, modify and detele room's booking.
Log time ago I used Exchange 2007/10 for synchronisation, but now I'm a little lose in the Office 365 environment ...
I try to use Microsfoft Graph API and my personnal (just a mail on outlook.live.com) or company Outlook account in order to play with the use case.
But I don't understand how to connect a C# program to the new Office 365 access, because I Exchange 07/10 it was with a IIS actived EWS service with a certification. Now It seem to be with a Azure ID, but I don't understand if is really reccured even if you only use a simple C# program with you personnal account, you don't have a Azure App IP ...
Someony can give me some clues to create my connection plz ?
Thank a lot
I try to use Microsfoft Graph API and my personnal (just a mail on outlook.live.com) or company Outlook account in order to play with the use case.
You can get a proper Office365 to learn with by joining the Office365 developer program which is free https://developer.microsoft.com/en-us/microsoft-365/dev-program. You will also get an Access to the Azure Portal with this and be able to create Application registrations for oAuth
I would also suggest you look at using the Graph explorer https://developer.microsoft.com/en-us/graph/graph-explorer this allows you to test and learn how the Graph works
When you ready to code you can use the QuickStart for the Graph https://developer.microsoft.com/en-us/graph/quick-start which is quite good and step you through what you need to do.
Our client has asked us to integrate with their CRM (Microsoft Dynamics 365) from their e-commerce website in order to update customer information after a purchase.
We have been given the following documentation URL for the integration:
https://learn.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide/gg327838%28v%3dcrm.8%29
We've managed to get this working to the point where the application loads up a prompt asking for our Dynamics 365 username and password.
This is obviously not what we want.
Ideally we would problematically enter the username and password to retrieve the bearer token which will allow us to make subsequent requests to the relevant endpoints to update order information.
We can't seem to find any coherent documentation that explains how to do this. This seems such a trivial task but apparently so difficult.
Has anyone had any experience implementing a similar solution? Or have any pointers of where we should look next?
Thanks in advance.
This is the link that solved our issue
https://learn.microsoft.com/en-gb/powerapps/developer/common-data-service/webapi/quick-start-console-app-csharp
I have an automation project (.NET Framework) which currently makes use of Microsoft.Exchange.WebServices to easily do simple tasks like finding email in a remote inbox or folder, checking for attachments etc. We grab the data from an organisation email account on: outlook.office365.com
Recently I have embarked on rewriting my project in .NET Core and this has presented a number of problems including my continued use of EWS:
Today we are sharing our plans to move away from Basic Authentication access for EWS over the next two years, with support ending Oct. 13, 2020.
https://techcommunity.microsoft.com/t5/exchange-team-blog/upcoming-changes-to-exchange-web-services-ews-api-for-office-365/ba-p/608055
Microsoft Graph is the recommended API to use for accessing Exchange Online data. New applications designed to access Exchange Online data should use Microsoft Graph.
EWS support also seems low within .NET Core various warnings appeared in the project after installing.
All my current work with EWS is done in a class with a couple of environment variables being passed to setup the WebCredentials etc. but as I have read through a number of Microsoft articles (including: Get access without a user) I have realized nothing will be simple anymore :) on the usage of Graph I have found no straight forward code examples of how to implement this purely back end integration into a mailbox in the simplest possible way.
I'm wondering if someone could give me a simple and appropriate Authentication and authorization example relevant to a back end integration? i.e. one without Administrator consent pop ups or any other pop ups that would not be appropriate to an integration like this, is this still possible?
Here's a net core 2.1 console example
There are Delegated and Application permissions. Delegated is a popup, and requires a user, application is via a service principal (and can be done non-interactively/in automation).
Step 2 in the above example uses the User.Read.All permission. That gets you email address, as well as a bunch of other information about your users. It's way overkill if you just want email. User.ReadBasic.All is a much better permission to put on the app registration for your purposes.(The example should work fine with you changing the permissions to User.ReadBasic.All)
In the last part of the example (pasted below), you'll want to change the query and most likely want to add an iterator.
GraphServiceClient graphClient = GetAuthenticatedGraphClient(config);
List<QueryOption> options = new List<QueryOption>
{
new QueryOption("$top", "1")
};
var graphResult = graphClient.Users.Request(options).GetAsync().Result;
Console.WriteLine("Graph SDK Result");
Console.WriteLine(graphResult[0].DisplayName);
Graph and MSAL may seem complicated at first but are very valuable. Microsoft is adding functionality (and functions) to graph regularly. Graph 1.0 Docs
The project I'm working on is a set of tools for users to manage their own accounts. For example, generic users will be able to access and update their Drive or calendars, and for administrators they can additionally get lists of their users and groups and manage those.
My concern is the API limits. At this point in time the project's client ID and secret are hard-coded because I want users to just be able to download and run the tools (which is working great until someone queries all users and uses up half of the daily limit for one of the APIs). I realize I can request more API calls, but I'm not sure that's the best solution.
In order to have each user on their own API limits, will I need to have each person using it set up a new Google Code project with its own set of limits? Or is there a way to allow the same project to have limits based on domain? I'm not sure what best practice is.
Edit: I should mention I'm authenticating via OAuth2.0 using 2-legged authentication, as my understanding was that was the best way to do it for administrators and users... should I be using 3-legged instead?
This is (probably) not an answer, but ...
A good question is precisely what is an "app". In this answer What is the limit on Google Drive API usage?, Nivco from Google says "Currently for the Drive API it reads "Courtesy limit: 10,000,000 queries/day". It's a per app quota"
and on the API Console, your project can consist of many "apps", each with its own client ID.
So, either (a) the term "app", being ill-defined, is being used incorrectly, or (b) you can achieve what you are looking for by creating multiple apps within your project.
Sadly, I suspect it's (a), but might be worth confirming.
I would like to know what is the possibilities to programmatically change data on Exchange Server?
with Exchange Web Service (EWS) can I (change means add/edit/delete):
change data on Exchange Server for other users?
change Global Address List?
if not, how I can do that programmatically?
we have a system that we need to make it communicate with Exchange Server to do different tasks, related to calendar, email, GAL
what is the best practice and approach I should think about?
cheers
I dont't know what about GAL, but surely You can manage users calendars(adding meeting,s adding taksks, ...) and emails(reading, sending etc.).
To manage other user accounts You have to enable impersonation.
Some time ago I wrote two posts on my blog how to impersonate Exchange Service Binding and how to add an appointment to any users calendar in Exchange. I won't paste the code here because it makes no sense, just here You have links if You're interested:
Impersonation
Creating appointment
But now it's easier way to achieve the same results as above, but with less lines of code thanks to Exchange Web Services Managed API 1.1 SDK. So, if You want to enable communication with excahnge You should read more about this API and see if it suits You and Your demands.