如何在 C# 中认证跑道
How to Authenticate Podio in C#
这是我第一次尝试进行身份验证,我不太明白。我在 Visual Basic 中工作,我已经安装了 Nuget Podio.Async.
在下面的代码中不会使用应用程序或密码进行身份验证。
当我删除 'async' 和 'await' 时,它似乎进行了身份验证,但随后我丢失了 'item.Fields'。
static void Main()
{
Init();
}
public static async void Init()
{
var podio = new Podio(clientId, clientSecret);
Console.WriteLine("Client ID and Secret");
//await podio.AuthenticateWithApp(appId, appToken);
await podio.AuthenticateWithPassword(username, password);
Console.WriteLine("Authenticated");
var item = await podio.ItemService.GetItem(1124848809);
Console.WriteLine(item.Fields.Count);
}
方法Init
是一个async
方法。您在同步方法 (`main') 中调用它。这是调用异步方法的错误方法!
请尝试以下解决方法,它应该可以解决您的问题:
static void Main()
{
Init().Wait();
}
public static async Task Init()
{
var podio = new Podio(clientId, clientSecret);
Console.WriteLine("Client ID and Secret");
//await podio.AuthenticateWithApp(appId, appToken);
await podio.AuthenticateWithPassword(username, password);
Console.WriteLine("Authenticated");
var item = await podio.ItemService.GetItem(1124848809);
Console.WriteLine(item.Fields.Count);
}
更新 1:
因为main
方法是同步方法,所以我调用了Wait()
方法,让Init
方法在main
方法内部同步调用。为了使事情正常工作 never 定义一个具有 void
return 值的异步方法,我还将 Init 的 return 值更改为 Task
.
事实证明,从 7.1 版开始,您现在可以使用异步 Main 方法。此代码对我有用:
static async Task<int> Main()
{
var podio = new Podio(clientId, clientSecret);
await podio.AuthenticateWithPassword(username, password);
var item = await podio.ItemService.GetItem(1124848809);
Console.WriteLine(item.Fields.Count);
return 0;
}
这是我第一次尝试进行身份验证,我不太明白。我在 Visual Basic 中工作,我已经安装了 Nuget Podio.Async.
在下面的代码中不会使用应用程序或密码进行身份验证。
当我删除 'async' 和 'await' 时,它似乎进行了身份验证,但随后我丢失了 'item.Fields'。
static void Main()
{
Init();
}
public static async void Init()
{
var podio = new Podio(clientId, clientSecret);
Console.WriteLine("Client ID and Secret");
//await podio.AuthenticateWithApp(appId, appToken);
await podio.AuthenticateWithPassword(username, password);
Console.WriteLine("Authenticated");
var item = await podio.ItemService.GetItem(1124848809);
Console.WriteLine(item.Fields.Count);
}
方法Init
是一个async
方法。您在同步方法 (`main') 中调用它。这是调用异步方法的错误方法!
请尝试以下解决方法,它应该可以解决您的问题:
static void Main()
{
Init().Wait();
}
public static async Task Init()
{
var podio = new Podio(clientId, clientSecret);
Console.WriteLine("Client ID and Secret");
//await podio.AuthenticateWithApp(appId, appToken);
await podio.AuthenticateWithPassword(username, password);
Console.WriteLine("Authenticated");
var item = await podio.ItemService.GetItem(1124848809);
Console.WriteLine(item.Fields.Count);
}
更新 1:
因为main
方法是同步方法,所以我调用了Wait()
方法,让Init
方法在main
方法内部同步调用。为了使事情正常工作 never 定义一个具有 void
return 值的异步方法,我还将 Init 的 return 值更改为 Task
.
事实证明,从 7.1 版开始,您现在可以使用异步 Main 方法。此代码对我有用:
static async Task<int> Main()
{
var podio = new Podio(clientId, clientSecret);
await podio.AuthenticateWithPassword(username, password);
var item = await podio.ItemService.GetItem(1124848809);
Console.WriteLine(item.Fields.Count);
return 0;
}