Microsoft Graph получить фотографии пользователя - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь загрузить фотографию профиля некоторых пользователей в моей организации.Я получаю access_token, но на следующем шаге получим сообщение об ошибке:

Токен не содержит разрешений, или разрешения не могут быть поняты.

Мое приложениеимеет на мой взгляд все необходимые разрешения : 2

Вот мой используемый код:

Sub Test_GetToken()
    Dim xml As New MSXML2.XMLHTTP60
    Dim url As String
    Dim Json As Object

    url = "https://login.microsoftonline.com/tenant_id/oauth2/v2.0/token"

    xml.Open "POST", url, False
    xml.setRequestHeader "application", "x-www-form-urlencoded"
    xml.Send ("client_id=1234678&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=12345678&grant_type=client_credentials")

    Set Json = JsonConverter.ParseJson(xml.responseText)

    access_token = Json("access_token")
    token_type = Json("token_type")
    expires_in = Json("expires_in")
    ext_expires_in = Json("ext_expires_in")


    ' trying to get the photo
    url = "https://graph.microsoft.com/v1.0/users/user1@OUTLOOK.DE/photo/$value"

    xml.Open "GET", url, False
    xml.setRequestHeader "application", "x-www-form-urlencoded"
    xml.setRequestHeader "Content-Type", "text/json"
    xml.setRequestHeader "Authorization", token_type & " " & access_token

    xml.Send ("")

    'Debug.Print token_type & " " & access_token
    'Debug.Print xml.getAllResponseHeaders
    Debug.Print xml.responseText

    Set xml = Nothing
End Sub

Есть ли у кого-нибудь идеи, гдеошибка есть?

Ответы [ 2 ]

3 голосов
/ 13 марта 2019

Здесь есть несколько неправильных вещей:

  1. В HTTP нет заголовка application
  2. x-www-form-urlencoded не является полным Content-Type (должно быть `применение / х-WWW-форм-urlencoded).
  3. Ваш Content-Type должен быть application/json
  4. Вы не можете использовать OAuth-грант Client Credentials для доступа к учетной записи Microsoft (то есть к личному @Outlook адресу).Учетные данные клиента могут получать доступ только к данным пользователей вашего клиента.Чтобы получить доступ к данным личной учетной записи, необходимо, чтобы пользователь проходил аутентификацию, используя код авторизации или неявные разрешения OAuth.
0 голосов
/ 15 марта 2019

Я получил согласие администратора, и теперь оно работает. спасибо Марку за улучшение моего кода и получение решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...