Я работаю над веб-проектом (HTML, CSS, JavaScript, с бэк-эндом в PHP). Я успешно получил вход в Google, используя их простой API, но не могу получить эквивалент Microsoft по функциям. Официальные онлайн решения для этого, похоже, полагаются на .NET или PHP Composer. Я попробую composer, если это единственный способ, но простой метод JS / PHP будет проще всего.
Я пытался использовать следующее:
https://github.com/microsoftgraph/msgraph-sdk-javascript
https://github.com/AzureAD/microsoft-authentication-library-for-js
Приведенный ниже код является наиболее близким, я пришел к рабочему решению. Я могу получить некоторый идентификатор пользователя (который кажется уникальным и постоянным для каждого пользователя). Этого может быть достаточно, чтобы настроить желаемую систему входа в систему, но было бы идеально, если бы я мог также получить их имя и фотографию профиля.
<script class="pre">
var userAgentApplication = new Msal.UserAgentApplication("MY CLIENT ID", null, function (errorDes, token, error, tokenType) {
// this callback is called after loginRedirect OR acquireTokenRedirect (not used for loginPopup/aquireTokenPopup)
})
userAgentApplication.loginPopup(["user.read"]).then(function (token) {
var user = userAgentApplication.getUser(); //this is good
//user.userIdentifier seems to be a unique ID
//I will store this and use it for future verification
console.log(user);
//START
// get an access token
userAgentApplication.acquireTokenSilent(["user.read"]).then(function (token) {
console.log("ATS promise resolved");
}, function (error) {
console.log(error);
// interaction required
if (error.indexOf("interaction_required") != -1) {
userAgentApplication.acquireTokenPopup(["user.read"]).then(function (token) {
// success
console.log("s2");
}, function (error) {
console.log("e2");
// error
});
}
});
//END
// signin successful
}, function (error) {
console.log(error);
// handle error
});
</script>
(этот код не будет работать так, как я его вставил, потому что он опирается на скрипт MSAL из второй ссылки на github и нуждается в идентификаторе клиента приложения)
После получения токена доступа с областью действия user.read
Вы могли бы позвонить в Microsoft Graph API для получить информацию в профиле пользователя такие как displayName, businessPhones:
https://graph.microsoft.com/v1.0/me
Content-Type:application/json
Authorization:Bearer {token}
Получить фотография профиля пользователя :
GET https://graph.microsoft.com/v1.0/me/photo/$value
Кроме того, если вы используете клиентскую библиотеку Microsoft Graph JavaScript в первой ссылке, вы можете получить displayName пользователя и фотографию профиля:
client
.api('/me')
.select("displayName")
.get((err, res) => {
if (err) {
console.log(err);
return;
}
console.log(res);
});
// Example of downloading the user's profile photo and displaying it in an img tag
client
.api('/me/photo/$value')
.responseType('blob')
.get((err, res, rawResponse) => {
if (err) throw err;
const url = window.URL;
const blobUrl = url.createObjectURL(rawResponse.xhr.response);
document.getElementById("profileImg").setAttribute("src", blobUrl);
});
Пожалуйста, обратитесь к примеру кода Вот .
Других решений пока нет …