Wpis z mikrobloga

@Koliat: potrzebuję pobrać informacje o userach/grupach itp. Gubię się w autoryzacji. Udało mi się jakoś uzyskać token, ale nie bardzo rozumię o co chodzi w parametrze scope. Korzystając ze swojego tokena przy próbie odczytania danych dla komunikatu:
https://graph.microsoft.com/v1.0/me
{
"error": {
"code": "Request_ResourceNotFound",
"message": "Resource 'xxxxxxxxx-2909-4f29-8a92-3260a40b3fc8' does not exist or one of its queried reference-property objects are
  • Odpowiedz
@obieq: /me powinno Ci zwrócić normalnie dane konta pytającego. Scope tu nie ma wikeszego znaczenia - jakie uprawnienia ma Twoja apka którą się uwierzytelniasz?
  • Odpowiedz
@obieq: teraz uwierzytelniasz się do grapha przez clientcredentials czyli bezpośrednio jako aplikacja. Aplikacja nie ma swojej " tożsamości " którą by zwracała przez endpoint /me

https://docs.microsoft.com/en-us/graph/auth-v2-user

Aby uzyskać dostęp do /me musisz użyć grant
type=authorizationcode zamiast clientcredentials. Tam masz dwie zakładki w dokumentacji - Get access on behalf of a user, Get access without a user - Ty robisz to "without a user" a potrzebny Ci on
  • Odpowiedz
@Koliat: super to jest prawdopdobnie powód. Udało mi się już nawet pobierać dane itp. Pytanie tylko czy kojarzysz może jak obsłużyć w MsGraph SDK "stronicowanie" ponieważ 1 wywołąnie robię jako:
var users = await graphServiceClient.Users.Request().Select(u => new { u.Id, u.DisplayName, u.Mail, u.MobilePhone, u.DeletedDateTime }).GetAsync(); /* HireDate not supported wali błędem */

zwracany jest link z parametrem skiptoken do kolejnej strony?
"@odata.nextLink": "https://graph.microsoft.com/v1.0/users?$skiptoken=X%274453707402xxxxxxxxxx%27",
  • Odpowiedz
@Koliat: nie chce korzystać z me bo pobieram grupy "innych" użytkownikówi działa mi już.
List LTeamsAllUsersGroups = new List();
var teamMembersOfGroup = await graphClient.Groups[groupID].Members.Request().Top(998)
.Select(u => new { u.Id, /*Group ID*/
  • Odpowiedz