Вход в Microsoft с помощью Angular

Я интегрировал учетные записи социальных сетей (Google и Facebook) через angularx-социальный-логин и теперь нахожу способ интегрировать учетные записи на базе Microsoft.

Есть ли способ интегрировать учетные записи Microsoft (hotmail, live, outlook) с Angular?

Все поиски и примеры в Интернете в основном относятся к Microsoft Azure. Есть ли какая-нибудь библиотека npm для интеграции этого? Любые идеи?

Сделайте это на JS ... Или сделайте свою библиотеку docs.microsoft.com/en-us/outlook/rest/javascript-tutorial

Sergey 05.01.2019 00:55

@Sergey, спасибо и проверю на этом

Eclatech 05.01.2019 00:57

@Sergey JS. Что ты имел в виду? Не могли бы вы объяснить?

Eclatech 05.01.2019 01:01

Для каждого API, предназначенного для использования на веб-сайтах, есть документ о том, как использовать его в JS (JavaScript). Поскольку Angular - это просто JS-фреймворк, вы можете работать с простым JS.

Sergey 05.01.2019 11:25

@Sergey, разобрался после твоего комментария. Спасибо!

Eclatech 05.01.2019 12:28
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
3
5
3 584
2

Ответы 2

После комментария Сергея я реализовал это с помощью мсал.

Вот,

npm install msal --save

login.component.ts

import { Component } from '@angular/core';
import { UserAgentApplication } from 'msal'

@Component({
    selector: 'app-login',
    templateUrl: './login.component.html'
})
export class LoginComponent 
{
    userData;
    userAgentApplication;

    constructor(private socialAuthService: AuthService) {
        var applicationConfig = {
            clientID: 'YOUR_CLIENT_ID'
        };

        this.userAgentApplication = new UserAgentApplication(applicationConfig.clientID, null, this.tokenReceivedCallback);
    }

    public tokenReceivedCallback(errorDesc, token, error, tokenType) {
        if (token) {
            this.userData = token;

            console.info("Token: " + token)
        } else {
            console.info(error + ":" + errorDesc);
        }
    }

    public microsoftSignIn() {
        var graphScopes = ["user.read", "mail.send"];
        let that = this;

        that.userAgentApplication.loginPopup(graphScopes).then(function(idToken) {
            //Login Success
            that.userAgentApplication.acquireTokenSilent(graphScopes).then(function(accessToken) {

                console.info(accessToken)
                //AcquireTokenSilent Success
                var headers = new Headers();
                var bearer = "Bearer " + accessToken;
                headers.append("Authorization", bearer);
                var options = {
                    method: "GET",
                    headers: headers
                };
                var graphEndpoint = "https://graph.microsoft.com/v1.0/me";

                fetch(graphEndpoint, options)
                    .then(function(response) {

                        response.json().then(function(data) {
                            that.userData = data;

                            console.info(data)
                        })
                    })
            }, function(error) {
                //AcquireTokenSilent Failure, send an interactive request.
                that.userAgentApplication.acquireTokenPopup(graphScopes).then(function(accessToken) {
                    //updateUI();
                }, function(error) {
                    console.info(error);
                });
            })
        }, function(error) {
            //login failure
            console.info(error);
        });
    }
}

login.component.html

{{ userData | json }}

<button (click) = "microsoftSignIn()">Sign in with Microsoft</button>

Кажется, это работает, я постараюсь сообщить вам, ребята

Liu Zhang 18.03.2019 11:12

Сейчас есть библиотека msal-angular:
https://www.npmjs.com/package/@azure/msal-angular
https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/angular9-sample-app

Я сделал собственную реализацию MsalInterceptor для решения проблем с protectedResourceMap.
Это мой собственный блок кода:

// #region own workaround in order not to put every api endpoint url to settings
if (!scopes && req.url.startsWith(this.settingsService.apiUrl)) {
  scopes = [this.auth.getCurrentConfiguration().auth.clientId];
}
// #endregion

// If there are no scopes set for this request, do nothing.
if (!scopes) {
  return next.handle(req);
}

PS: Проголосуйте за подстановочный знак в protectedResourceMap https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/1776

Другие вопросы по теме