Skip to content
This repository has been archived by the owner on Oct 10, 2020. It is now read-only.
/ react-ms-login Public archive

React.js component to implement Microsoft login

Notifications You must be signed in to change notification settings

nishch/react-ms-login

Repository files navigation

react-ms-login

A react component to implement Microsoft login (via outlook.com, live.com, office365.com). Visit Implement Microsoft login in a react.js app for a detailed write up.

How to use

follow the steps mentioned below:

Step 1

Obtain application Id by registering your app in Microsoft App Dev Center, under the platforms section, add web platform and enter the redirect uri, which is the path of an html file residing on your web server. For example http://localhost:9999/authComplete.html. Content of this html file in mentioned in step 4. Select appropriate scopes from the Delegated Permissions Section. Keep a note of these.

Step 2

Install the package via

npm install react-ms-login --save

Step 3

You can use this component anywhere in your app as shown below:

import React from "react";
import ReactDOM from "react-dom";

import ReactLoginMS from "react-ms-login";

class ButtonContent extends React.Component {
    render(){
        return (
        <span>
            MS Login
        </span>)
    }
}

ReactDOM.render(<ReactLoginMS
    clientId="a157e2ad-7d43-4478-9051-541fd1b2023f" // required: 'application id/client id' obtained from https://apps.dev.microsoft.com for your app
    redirectUri="http://localhost:9999/authComplete.html" // required: redirectUri registered in https://apps.dev.microsoft.com for your app
    scopes={["user.read"]} //optional: defaults to "user.read" full list is present https://developer.microsoft.com/en-us/graph/docs/concepts/permissions_reference
    responseType="token" //optional: valid values are "token" for `Implicite OAuth flow` and "code" for `Authorization Code flow` defaults to "token"
    cssClass="some-css-class" // optional: space separated class names which are applied on the html Button element
    btnContent={ButtonContent} // optional: can be string or a valid react component which can be rendered inside html Button element
    handleLogin={(data) => console.log(data)}// required: callback to receive token/code after successful login
/>, document.getElementById("app"));

Step 4

Based on the redirectUri you have configured in the Step 1, create the corresponding html file. For example in this case since we have configured redirectUri as http://localhost:9999/authComplete.html, that means we need authComplete.html file at the root of the server. You can of course choose any path in your server, just make sure redirectUri reflects that path correctly. Content of authComplete.html is shown below.

<!DOCTYPE html>
<html>

<head>
    <script src="dist/authComplete.js"></script>
    <script>
        ReactLoginMS.authComplete();
    </script>
</head>
<body>
    
</body>
</html>

first script reference points to authComplete.js, make sure you copy this file from the dist directory of react-ms-login package and put it in your server where it's accessible and then change the script src to reflect the path.