Excel 获取Graph API的访问令牌

Excel 获取Graph API的访问令牌,excel,vba,Excel,Vba,这是我第一次尝试调用图形API(使用VBA),但我仍然无法为此获取一个访问令牌。 虽然我已经阅读了文档,但我不知道在不强制用户登录的情况下,需要应用什么流来获取访问令牌。在我的OneDrive个人帐户上可以这样做吗 这是我试过的 Sub Test_GetToken() Dim xml As New MSXML2.XMLHTTP60 Dim url As String url = "https://login.microsoftonline.com/namelles_t

这是我第一次尝试调用图形API(使用VBA),但我仍然无法为此获取一个访问令牌。 虽然我已经阅读了文档,但我不知道在不强制用户登录的情况下,需要应用什么流来获取访问令牌。在我的OneDrive个人帐户上可以这样做吗

这是我试过的

Sub Test_GetToken()

    Dim xml As New MSXML2.XMLHTTP60
    Dim url As String

    url = "https://login.microsoftonline.com/namelles_test@outlook.com/oauth2/v2.0/token"

    url = url & "?client_id=eca0b14c-1154-4768-8e45-2cb5639b7e0d"
    url = url & "grant_type=client_credentials"
    url = url & "&client_secret=VksZ8FeDF5XiRfqTBsgs628"
    url = url & "&resource=https://graph.microsoft.com"

    xml.Open "POST", url, False
    xml.setRequestHeader "application", "x-www-form-urlencoded"


    xml.send ("")
    Debug.Print "status=" & xml.Status, "readyState=" & xml.readyState

    Debug.Print xml.responseText

    Set xml = Nothing

End Sub
我创建了一个用于测试的帐户(用户名:nameless)_test@outlook.com,userpass:nameless1234)。因此,可以使用真正的凭证。 有人能告诉我我需要申请的流程以及请求是如何构建的吗?
提前感谢

看起来您在代码中的电子邮件输入错误

url = "https://login.microsoftonline.com/namelles_test@outlook.com/oauth2/v2.0/token"
应该是:

url = "https://login.microsoftonline.com/nameless_test@outlook.com/oauth2/v2.0/token"
此外,根据您的评论,您似乎必须将
grant\u type
放在请求主体中,而不是URL中的查询参数

xml.send ("grant_type=client_credentials")

谢谢你的快速回答。我已经修复了地址,但仍然得到以下错误:{“error”:“invalid_request”,“error_description”:“AADSTS90014:请求正文必须包含以下参数:'grant_type'。\r\n地址ID:efa6f9f2-cfa4-443a-929c-06eefb7a0d00\r\n相关ID:d09be614-0371-482c-8d58-084d5cf74126\r\n终止日期:2017-06-24 19:21:34Z,“error_code:[90014],“timestamp”:“2017-06-24 19:21:34Z”,“trace_id”:“efa6f9f2-cfa4-443a-929c-06eefb7a0d00”,“correlation_id”:“d09be614-0371-482c-8d58-084d5cf74126”}这里的字符串:url=url和“grant_type=client_credentials”不应该以符号开头吗?