You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/active-directory/develop/tutorial-v2-javascript-spa.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -159,7 +159,7 @@ sampleApp/
159
159
In the next steps you'll create a new folder for the JavaScript SPA, and set up the user interface (UI).
160
160
161
161
> [!TIP]
162
-
> When you set up an Azure Active Directory (Azure AD) account, you create a tenant. This is a digital representation of your organization, and is primarily associated with a domain, like Microsoft.com. If you wish to learn how applications can work with multiple tenants, refer to the [application model](https://docs.microsoft.com/azure/active-directory/develop/application-model).
162
+
> When you set up an Azure Active Directory (Azure AD) account, you create a tenant. This is a digital representation of your organization, and is primarily associated with a domain, like Microsoft.com. If you wish to learn how applications can work with multiple tenants, refer to the [application model](/articles/active-directory/develop/application-model.md).
163
163
164
164
## Create the SPA UI
165
165
@@ -488,7 +488,7 @@ The `acquireTokenSilent` method handles token acquisition and renewal without an
488
488
489
489
## Call the Microsoft Graph API using the acquired token
490
490
491
-
1. In the *JavaScriptSPA* folder create a *.js* file named *graphConfig.js*, which stores the Representational State Transfer ([REST](https://docs.microsoft.com/rest/api/azure/)) endpoints. Add the following code:
491
+
1. In the *JavaScriptSPA* folder create a *.js* file named *graphConfig.js*, which stores the Representational State Transfer ([REST](/rest/api/azure/)) endpoints. Add the following code:
Copy file name to clipboardExpand all lines: articles/active-directory/develop/tutorial-v2-react.md
+49-42Lines changed: 49 additions & 42 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -133,26 +133,24 @@ In the [Redirect URI: MSAL.js 2.0 with auth code flow](scenario-spa-app-registra
133
133
import { msalConfig } from "./authConfig";
134
134
```
135
135
136
-
1. Underneath the imports in*src/index.js* create a `PublicClientApplication` instance using the configuration from step 1.
136
+
2. Underneath the imports in*src/index.js* create a `PublicClientApplication` instance using the configuration from step 1.
137
137
138
138
```javascript
139
139
const msalInstance = new PublicClientApplication(msalConfig);
140
140
```
141
141
142
-
1. Find the `<App />` component in*src/index.js* and wrap it in the `MsalProvider`component. Your render function should look like this:
142
+
3. Find the `<App />` component in*src/index.js* and wrap it in the `MsalProvider`component. Your render function should look like this:
143
143
144
144
```jsx
145
-
ReactDOM.render(
145
+
root.render(
146
146
<React.StrictMode>
147
147
<MsalProviderinstance={msalInstance}>
148
148
<App/>
149
149
</MsalProvider>
150
-
</React.StrictMode>,
151
-
document.getElementById("root")
150
+
</React.StrictMode>
152
151
);
153
152
```
154
153
155
-
156
154
## Sign in users
157
155
158
156
Create a folder in *src* called *components* and create a file inside this folder named *SignInButton.jsx*. Add the code from either of the following sections to invoke login using a pop-up window or a full-frame redirect:
@@ -167,20 +165,22 @@ import { useMsal } from "@azure/msal-react";
167
165
import { loginRequest } from"../authConfig";
168
166
importButtonfrom"react-bootstrap/Button";
169
167
170
-
functionhandleLogin(instance) {
171
-
instance.loginPopup(loginRequest).catch(e=> {
172
-
console.error(e);
173
-
});
174
-
}
175
168
176
169
/**
177
170
* Renders a button which, when selected, will open a popup for login
178
171
*/
179
172
exportconstSignInButton= () => {
180
173
const { instance } =useMsal();
181
174
175
+
consthandleLogin= (loginType) => {
176
+
if (loginType ==="popup") {
177
+
instance.loginPopup(loginRequest).catch(e=> {
178
+
console.log(e);
179
+
});
180
+
}
181
+
}
182
182
return (
183
-
<Button variant="secondary" className="ml-auto" onClick={() =>handleLogin(instance)}>Sign in using Popup</Button>
183
+
<Button variant="secondary" className="ml-auto" onClick={() =>handleLogin("popup")}>Sign in using Popup</Button>
184
184
);
185
185
}
186
186
```
@@ -195,20 +195,22 @@ import { useMsal } from "@azure/msal-react";
195
195
import { loginRequest } from"../authConfig";
196
196
importButtonfrom"react-bootstrap/Button";
197
197
198
-
functionhandleLogin(instance) {
199
-
instance.loginRedirect(loginRequest).catch(e=> {
200
-
console.error(e);
201
-
});
202
-
}
203
198
204
199
/**
205
200
* Renders a button which, when selected, will redirect the page to the login prompt
206
201
*/
207
202
exportconstSignInButton= () => {
208
203
const { instance } =useMsal();
209
204
205
+
consthandleLogin= (loginType) => {
206
+
if (loginType ==="redirect") {
207
+
instance.loginRedirect(loginRequest).catch(e=> {
208
+
console.log(e);
209
+
});
210
+
}
211
+
}
210
212
return (
211
-
<Button variant="secondary" className="ml-auto" onClick={() =>handleLogin(instance)}>Sign in using Redirect</Button>
213
+
<Button variant="secondary" className="ml-auto" onClick={() =>handleLogin("redirect")}>Sign in using Redirect</Button>
@@ -424,7 +431,7 @@ In order to render certain components only for authenticated or unauthenticated
424
431
});
425
432
});
426
433
}
427
-
434
+
428
435
return (
429
436
<>
430
437
<h5 className="card-title">Welcome {name}</h5>
@@ -450,7 +457,7 @@ In order to render certain components only for authenticated or unauthenticated
450
457
451
458
1. Finally, add your new`ProfileContent` component as a child of the `AuthenticatedTemplate`in your `App` component in*src/App.js*. Your`App` component should look like this:
452
459
453
-
```javascript
460
+
```jsx
454
461
function App() {
455
462
return (
456
463
<PageLayout>
@@ -538,15 +545,15 @@ If you're using Internet Explorer, we recommend that you use the `loginRedirect`
538
545
function ProfileContent() {
539
546
const { instance, accounts } = useMsal();
540
547
const [graphData, setGraphData] = useState(null);
541
-
548
+
542
549
const name = accounts[0] && accounts[0].name;
543
-
550
+
544
551
function RequestProfileData() {
545
552
const request = {
546
553
...loginRequest,
547
554
account: accounts[0]
548
555
};
549
-
556
+
550
557
// Silently acquires an access token which is then attached to a request for Microsoft Graph data
0 commit comments