Microsoft Graph Toolkit
Microsoft Graph
UI Components and Authentication Providers forDocumentation
The Microsoft Graph Toolkit is a collection of reusable, framework-agnostic components and authentication providers for accessing and working with Microsoft Graph. The components are fully functional right of out of the box, with built in providers that authenticate with and fetch data from Microsoft Graph.
Packages • Components • Providers • Getting Started • Running the Samples • Contribute • Feedback & Requests
• License • Code of Conduct
Packages
Preview packages
In addition to the @next
preview packages, we also ship packages under several other preview tags with various features in progress:
Tag | Description |
---|---|
next |
Next release - updated on each commit to main |
next.fluentui |
Next major release (v3) with components based on FluentUI web components |
To install these packages, use the tag as the version in your npm i
command. Ex: npm i @microsoft/[email protected]
. Make sure to install the same version for all mgt packages to avoid any conflicts. Keep in mind, these are features in preview and are not recommended for production use.
Components
You can explore components and samples with the playground powered by storybook.
The Toolkit currently includes the following components:
- mgt-login
- mgt-person
- mgt-person-card
- mgt-people
- mgt-people-picker
- mgt-agenda
- mgt-tasks
- mgt-todo
- mgt-teams-channel-picker
- mgt-file
- mgt-file-list
- mgt-get
All web components are also available as React component - see @microsoft/mgt-react documentation.
Providers
Providers enable authentication and provide the implementation for acquiring access tokens on various platforms. The providers also expose a Microsoft Graph Client for calling the Microsoft Graph APIs. The components work best when used with a provider, but the providers can be used on their own as well.
- MsalProvider
- Msal2Provider
- SharePointProvider
- TeamsProvider
- TeamsMsal2Provider
- TeamsFxProvider
- ProxyProvider
- SimpleProvider
- ElectronProvider
You can also create your own providers by extending the IProvider abstract class.
Getting Started
The following guides are available to help you get started with the Toolkit:
- Build a web application (JavaScript)
- Build a SharePoint web part Part
- Build a Microsoft Teams tab
- Build a Microsoft Teams tab with SSO
- Build an Electron app
- Use the Toolkit with React
- Use the Toolkit with Angular
- Build a productivity hub app
You can use the components by referencing the loader directly (via unpkg), or installing the npm package
Use via mgt-loader:
<script src="https://unpkg.com/@microsoft/mgt@2/dist/bundle/mgt-loader.js"></script>
NOTE: This link will load the highest available version of @microsoft/mgt in the range
>= 2.0.0 < 3.0.0
, omitting the@2
fragment from the url results in loading the latest version. This could result in loading a new major version and breaking the application.
You can then start using the components in your html page. Here is a full working example with the Msal2 provider:
<script src="https://unpkg.com/@microsoft/mgt@2/dist/bundle/mgt-loader.js"></script>
<mgt-msal2-provider client-id="[CLIENT-ID]"></mgt-msal2-provider>
<mgt-login></mgt-login>
<!-- <script>
// alternatively, you can set the provider in code and provide more options
mgt.Providers.globalProvider = new mgt.Msal2Provider({clientId: '[CLIENT-ID]'});
</script> -->
NOTE: MSAL requires the page to be hosted in a web server for the authentication redirects. If you are just getting started and want to play around, the quickest way is to use something like live server in vscode.
Use via NPM:
The benefits of using MGT through NPM is that you have full control of the bundling process and you can bundle only the code you need for your site. First, add the npm package:
npm install @microsoft/mgt
Now you can reference all components and providers at the page you are using:
<script type="module" src="node_modules/@microsoft/mgt/dist/es6/index.js"></script>
<mgt-msal2-provider client-id="[CLIENT-ID]"></mgt-msal2-provider>
<mgt-login></mgt-login>
<mgt-agenda></mgt-agenda>
Running the samples
Some of our samples are coupled to use the locally built mgt packages instead of the published version from npm. Because of this, it's helpful to build the monorepo before attempting to run any of the samples.
# Starting at the root
yarn
yarn build
# Now you can run the React sample using the local packages
cd ./samples/react-app/
yarn start
This also means that running the samples in isolation may fail if there are breaking changes between the published version of mgt and the local copy. To workaround this, use samples that are known to be compatible with a specific release by checking out the appropriate branch or tag first.
Contribute
We enthusiastically welcome contributions and feedback. Please read our wiki and the contributing guide before you begin.
Code Contribution Challenge
There are many exciting new features or interesting bugs that have been left behind because our team is small with limited capacity. We would love your help! We have tagged these issues with 'help wanted' and/or 'good first issue'. If you see anything you would like to contribute to, you can reach out to [email protected] or reply to the issue for help or further discussion.
Feedback and Requests
For general questions and support, please use Stack Overflow where questions should be tagged with microsoft-graph-toolkit
Please use GitHub Issues for bug reports and feature requests. We highly recommend you browse existing issues before opening new issues.
License
All files in this GitHub repository are subject to the MIT license. This project also references fonts and icons from a CDN, which are subject to a separate asset license.
Code of Conduct
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.