我正在使用 Visual Studio 2019 在 VB.NET 4.7.2 中创建一个应用程序。用户必须使用 OpenID Connect 对自己进行身份验证。
我已经使用 NuGet 包管理器下载了 IdentityModel 包,并尝试编写身份验证方法。
第一步之前:导入库
Imports System.Net
Imports IdentityModel.Client
Imports System.Threading.Tasks
第一步:令牌请求数据
Function Get_Token As String()
Dim request As TokenRequest = New TokenRequest
request.Address = "https://demo.identityserver.io/connect/token"
request.GrantType = "custom"
request.ClientId = "ClientID"
request.Parameters.Add("parameter1", "value1")
request.Parameters.Add("parameter2", "value2")
第二步:为令牌请求调用异步函数。我必须使用异步函数,因为函数 RequestTokenAsync 的响应具有 Task(Of TokenResponse) 作为类型。我的问题是:这是正确的方法吗?我如何调用异步。函数,以便可以在调用函数中评估返回变量响应?
Call AsyncCall(request)
异步函数:不起作用并给出错误 NullReferenceException
Async Function AsyncCall(rqst As TokenRequest) As Task(Of TokenResponse)
Dim client As Http.HttpClient = New Http.HttpClient()
Dim response As TokenResponse = Await client.RequestTokenAsync(rqst)
Return response
End Function
异步函数将变量响应返回给函数 Get_Token 并进一步评估该变量:
第三步:响应评估 即使异步函数有“返回响应”以将变量响应返回给调用函数,但调用函数无法识别响应,我怎样才能正确返回变量响应?
Get_Token = response.AccessToken
End Function
你能帮助我,或者告诉我任何方向吗?