Vb.net ADAL中的IPlatformParameters

Vb.net ADAL中的IPlatformParameters,vb.net,adal,Vb.net,Adal,我绝对是VB.net的新手。我在这里寻求你的帮助 我正在编写一个连接到RESTAPI的代码。我在向函数传递一个参数时遇到困难。这是我的密码: Dim AuthContext As New AuthenticationContext("https://login.microsoftonline.com/") Dim ClientId As String = "f8f710b23-d3ea-4dd3-8a0e-c5958a6bc16d" Dim RedirectUri

我绝对是VB.net的新手。我在这里寻求你的帮助

我正在编写一个连接到RESTAPI的代码。我在向函数传递一个参数时遇到困难。这是我的密码:

Dim AuthContext As New AuthenticationContext("https://login.microsoftonline.com/")
        Dim ClientId As String = "f8f710b23-d3ea-4dd3-8a0e-c5958a6bc16d"
        Dim RedirectUri As New Uri("ms-app://redirect/")
        Dim ResourceIDUri As String = "https://analysis.windows.net/powerbi/api"
        Dim AccessToken As String
        Dim AuthHeader As String
        Dim task1 As Task(Of AuthenticationResult) = AuthContext.AcquireTokenAsync(ResourceIDUri, ClientId, RedirectUri, New IPlatformParameters(PromptBehavior.Auto), New UserIdentifier("user1", 2))
我的问题是参数(
新IPlatformParameters(PromptBehavior.Auto)
)出现以下错误:

'New' cannot be used on an interface
这是您的文档

有人能告诉我传递参数的正确语法吗

result=wait ac.AcquireTokenAsync(“,”https://resourceUrl,新的Uri('https://ClientReplyUrl新的平台参数(PromptBehavior.Auto))

下面是ADAL.NET wiki的一个链接,详细介绍了如何使用平台参数类型为“PlatformParameters”的参数是ADAL.NET表示需要与用户进行何种交互的方式

Auto
仅在需要时提示用户输入凭据

  • 如果缓存中已存在令牌,则根本不显示任何对话框
  • 如果缓存中不存在令牌,但用户是已知的,或者用于交互的web浏览器控件中存在会话cookie,则对话框将闪烁但立即消失
  • 如果缓存中不存在令牌且用户未知,则会显示对话框供用户登录
始终
始终提示用户输入凭据,即使缓存中存在令牌,并且用户有会话。当应用程序希望让用户有机会使用不同的身份登录而不提供任何以前身份的提示时,这非常有用

RefreshSession
将显示web浏览器,令牌将得到更新。如果登录cookie可用(在嵌入式web视图中),则不会提示用户输入凭据,并且对话框将很快消失(将出现闪烁)

SelectAccount
这会显示一个对话框,其中包含用户当前拥有会话的身份。用户可以添加其他帐户

从不
[在Android和iOS上除外]:不提示用户输入凭据


CallerActivity
[Android]或
OwnerWindows
[.NET 4.5]使应用程序开发人员能够控制哪个窗口/活动将是身份验证对话框的父窗口/活动。开发人员可能出于UX原因希望提供此父级信息:以确保对话框显示在父级窗口的中心及其上方。

我必须使用正确的命名空间和Microsoft.IdentityModel.Clients.ActiveDirectory.DLL的正确版本重新编写另一个项目,并且我能够使用这段代码:

Dim AuthContext As AuthenticationContext
Dim ClientId As String
Dim RedirectUri As Uri
Dim TokenTask As Task(Of AuthenticationResult)
Dim AccessToken As String

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    AuthContext = New AuthenticationContext("https://login.microsoftonline.com/")
    ClientId = "<ClientID"
    RedirectUri = New Uri("<RedirectURI>")
    AccessToken = ""
    TokenTask = AuthContext.AcquireTokenAsync("<ResourceID>", ClientId, RedirectUri, New PlatformParameters(PromptBehavior.Auto), New UserIdentifier("user1", UserIdentifierType.RequiredDisplayableId))
    TokenTask.Wait(30000)
    AccessToken = TokenTask.Result.AccessToken
    TextBox1.Text = AccessToken
End Sub
Dim AuthContext作为AuthenticationContext
作为字符串的Dim ClientId
将Uri重定向为Uri
Dim TokenTask作为任务(AuthenticationResult的)
Dim AccessToken作为字符串
私有子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击
AuthContext=新的AuthenticationContext(“https://login.microsoftonline.com/")

ClientId=“应该是
newplatformparameters(promptpbehavior.Auto)
,如果没有
I
,您是新添加该类的实例,而不是接口。