Microsoft Graph控制台应用程序 - 通过ADAL

时间:2018-03-02 22:46:47

标签: c# azure-active-directory microsoft-graph

我有一个控制台应用程序,用户当前必须点击“登录”#39;获取Microsoft Graph应用程序的令牌。

是否可以将其设为'自动登录?

我可以看到AcquireTokenAsync方法有一些重载:

public static string GetAccessToken()
{
    // Create the authentication context (ADAL)
    var authenticationContext = new AuthenticationContext(Authority);

    var authenticationResult = authenticationContext.AcquireTokenAsync(GraphResource, 
        ClientId, RedirectUri, new PlatformParameters(PromptBehavior.Auto, true));
    var accessToken = authenticationResult.Result.AccessToken;
    return accessToken;
}

我无法为本机应用创建客户端密钥,因此无法使用这些备用重载。

我可以自行登录应用程序吗?

2 个答案:

答案 0 :(得分:1)

如果你看一下https://media.giphy.com/media/fjxPFluObAs5P3cXms/giphy.gif,即使是微软也承认他们的决定有时很糟糕:

  

输入应用程序的友好名称,例如“TodoListDaemon”,并选择“Web应用程序和/或Web API”作为应用程序类型。由于此应用程序是守护程序而非Web应用程序,因此它没有登录URL,因此对于此字段,只需输入“the official samples for the Azure SDK”。

因此,作为文档的快捷方式,请使用要求private async Task OnGoingToTheParkClicked(object sender, EventArgs e) { bool success = false; var already = await viewModel.AlreadyHavePendingRequestAsync()); Console.WriteLine("TEST"); throw new Exception(); } 的重载:

img_path = eachrow[11]
    try:
        print("Image url ::" +baseURL+img_path)
        opener = urllib.request.build_opener()
        opener.addheaders = [('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1941.0 Safari/537.36')]
        urllib.request.install_opener(opener)
        urllib.request.urlretrieve(baseURL+img_path, image_file_path + img_path)

    except Exception as e:
        print(e)
        img_path = "No image"

答案 1 :(得分:0)

另一种方法是使用从usercredential继承的userpasswordcredential对象,并使用acquiretoken方法获取令牌,这样就不需要签名验证了。显然,这不像其他答案中描述的守护进程方法那样安全。