Vbscript 从Microsoft Graph API授权请求获取空响应?

Vbscript 从Microsoft Graph API授权请求获取空响应?,vbscript,azure-active-directory,azure-ad-graph-api,Vbscript,Azure Active Directory,Azure Ad Graph Api,虽然请求的状态为200,但我收到一个空的Microsoft Graph API响应 我一直在遵循这些文件。- 我成功注册了一个应用程序并获得了客户端ID 我正在使用VBScript创建GET请求-以下是我的代码: Dim oXMLHTTP Dim oStream Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.3.0") oXMLHTTP.Open "GET", "https://login.micr

虽然请求的状态为200,但我收到一个空的Microsoft Graph API响应

我一直在遵循这些文件。-

我成功注册了一个应用程序并获得了客户端ID

我正在使用VBScript创建GET请求-以下是我的代码:

Dim oXMLHTTP
Dim oStream

Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.3.0")

oXMLHTTP.Open  "GET", "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=######&response_type=code&response_mode=query&scope=offline_access+mail.read", False
oXMLHTTP.Send
wscript.echo oXMLHTTP.status
wscript.echo oXMLHTTP.responseBody
有人能就我做错了什么提出建议吗


oXMLHTTP.status=200

使用oauth代码流获取令牌和调用api的过程如下:

在浏览器中输入此链接以获取授权代码:

 https://login.microsoftonline.com/{tenant id}/oauth2/authorize?
 client_id={your-client-id}
 &response_type=code
 &redirect_uri=https://localhost:4500/web/completeoauth/ms
 &response_mode=query
 &scope=openid offline_access https://graph.microsoft.com/mail.read
 &state=12345
使用代码获取访问令牌:。 对于您的问题,建议您使用MSAL.NET进行身份验证,这样就省去了获取代码的步骤


请参阅:

您没有做错任何事情授权请求成功,现在调用API执行操作。阅读上面的链接-如果用户同意您的应用程序请求的权限,响应将在代码参数中包含授权代码。下面是成功响应上一个请求的示例。因为请求中的response_mode参数被设置为query,所以响应在重定向URL的查询字符串中返回。因此,响应URL将包含在响应URL的查询字符串中传递的授权代码。亲爱的@Lankymart,感谢您的联系。我得到的响应为空。该工作流要求重定向到授权期间您提供的重定向url,我认为您希望尝试。请检查标记,OP正在使用not或any。
 Private Function Login() As Boolean

        Dim publicClientApp As IPublicClientApplication
        publicClientApp = PublicClientApplicationBuilder.Create(client_id).WithAuthority(authority).Build()

        Dim accounts As IEnumerable(Of IAccount) = publicClientApp.GetAccountsAsync().Result()
        Dim firstAccount As IAccount = accounts.FirstOrDefault()
        Dim authResult As AuthenticationResult

        Try
            authResult = publicClientApp.AcquireTokenSilent(scopes, firstAccount).ExecuteAsync().Result()
        Catch e As MsalUiRequiredException
            Try
                authResult = publicClientApp.AcquireTokenInteractive(scopes).ExecuteAsync().Result()
            Catch ex As Exception
                'user cancelled
                Return False
            End Try
        Catch ex As Exception
            Console.WriteLine($"Auth Exception: {ex.Message}")
            Return False
        End Try

        _accessToken = authResult.AccessToken

        Return True

    End Function