我尝试从组织中的某些用户那里下载个人资料图片。我正在获取access_token,但在下一步中获取错误消息:
令牌不包含任何权限,或者权限不可以 了解。
我认为我的应用具有所有必需的permissions: 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
有人知道错误在哪里吗?
答案 0 :(得分:3)
这里有几处错误:
application
标头x-www-form-urlencoded
是不完整的Content-Type
(应为application / x-www-form-urlencoded)。 Content-Type
应该是application/json
@Outlook
地址)。客户端凭据只能访问您租户内用户的数据。为了访问个人帐户数据,您需要使用授权代码或隐式OAuth授予来使用户进行身份验证。 答案 1 :(得分:0)
我获得了管理员同意,现在可以使用了。感谢Marc改进了我的代码并获得了解决方案。