Microsoft Graph Connect Sample for Xamarin Forms
Table of contents
- Register and configure the app
- Build and debug
- Questions and comments
- Additional resources
This sample shows how to connect a Xamarin Forms app to a Microsoft work or school (Azure Active Directory) or personal (Microsoft) account using the Microsoft Graph API to send an email. It uses the Microsoft Graph .NET Client SDK to work with data returned by Microsoft Graph.
In addition, the sample uses the Microsoft Authentication Library (MSAL) for authentication. The MSAL SDK provides features for working with the Azure AD v2.0 endpoint, which enables developers to write a single code flow that handles authentication for both users' work or school and personal accounts.
If you'd like to work with MSAL in a Xamarin Forms app of your own, follow these instructions for setting up a Xamarin Forms project with MSAL.
Note The MSAL SDK is currently in prerelease, and as such should not be used in production code. It is used here for illustrative purposes only.
This sample requires the following:
- Visual Studio 2015
- Xamarin for Visual Studio
- Windows 10 (development mode enabled)
- Either a Microsoft or Office 365 for business account
If you want to run the iOS project in this sample, you'll need the following:
- The latest iOS SDK
- The latest version of Xcode
- Mac OS X Yosemite(10.10) & above
- A Xamarin Mac agent connected to Visual Studio
You can use the Visual Studio Emulator for Android if you want to run the Android project.
Register and configure the app
- Sign into the App Registration Portal using either your personal or work or school account.
- Select Add an app.
Enter a name for the app, and select Create application.
The registration page displays, listing the properties of your app.
Under Platforms, select Add platform.
- Select Mobile application.
Copy the Client Id (App Id) value to the clipboard. You'll need to enter these values into the sample app.
The app id is a unique identifier for your app.
Build and debug
Note: If you see any errors while installing packages during step 2, make sure the local path where you placed the solution is not too long/deep. Moving the solution closer to the root of your drive resolves this issue.
Open the App.cs file inside the XamarinConnect (Portable) project of the solution.
After you've loaded the solution in Visual Studio, configure the sample to use the client id that you registered by making this the value of the ClientId variable in the App.cs file.
Select the project that you want to run. If you select the Universal Windows Platform option, you can run the sample on the local machine. If you want to run the iOS project, you'll need to connect to a Mac that has the Xamarin tools installed on it. (You can also open this solution in Xamarin Studio on a Mac and run the sample directly from there.) You can use the Visual Studio Emulator for Android if you want to run the Android project.
Press F5 to build and debug. Run the solution and sign in with either your personal or work or school account.
Note You might have to open the Build Configuration Manager to make sure that the Build and Deploy steps are selected for the UWP project.
Summary of key methods
The code in the main page of the app is relatively straight-forward and self-explanatory, as the calls for authentication and email service actually occur in the helper classes. The main page code primarily consists of event handlers for the two buttons:
When the Text value of this button is "connect," this method calls the GetAuthenticatedClient method to acquire a GraphServicesClient object representing the current user, which it uses to set user email address and display name. If this is successful, it also enables the send mail button and the text box where the user can enter an email address, and populates that text box with the user's own email address.
This method calls the ComposeAndSendMailAsync method, using the email address and display name variables set during ConnectButton_Click. If this method call is successful, it also updates the UI text accordingly.
With that in mind, it's worth looking at two methods in the helper classes in a little more detail:
This method of the AuthenticationHelper class authenticates the user with the Microsoft Authentication Library (MSAL).
It does this by retrieving an authentication token from an MSAL PublicClientApplication object and then passing that token to a Microsoft Graph DelegateAuthenticationProvider object.
The SignInCurrentUserAsync method on the main page can then read the user from this GraphServicesClient object and set the user email address and display name.
This method of the MailHelper class composes and sends the sample email.
If you'd like to contribute to this sample, see CONTRIBUTING.MD.
Questions and comments
We'd love to get your feedback about the Microsoft Graph Connect Sample for Xamarin Forms project. You can send your questions and suggestions to us in the Issues section of this repository.
Your feedback is important to us. Connect with us on Stack Overflow. Tag your questions with [MicrosoftGraph].
- Other Microsoft Graph Connect samples
- Microsoft Graph overview
- Office developer code samples
- Office dev center
Copyright (c) 2016 Microsoft. All rights reserved.