我在Windows Phone 8.1上使用
try
{
var Url = "https://...../oauth/authorize?client_id=" + Uri.EscapeDataString("4a3e...") + "&response_type=code&redirect_uri=" + Uri.EscapeDataString("http://localhost:8888/callback") + "&show_dialog=true";
var StartUri = new Uri(Url);
var EndUri = new Uri("http://localhost:8888/callback");
WebAuthenticationBroker.AuthenticateAndContinue(StartUri, EndUri,null, WebAuthenticationOptions.None);
}
catch (Exception Error)
{
//
// Bad Parameter, SSL/TLS Errors and Network Unavailable errors are to be handled here.
//
var dialog = new MessageDialog(Error.Message);
await dialog.ShowAsync();
}
因为WebAuthenticationBroker.AuthenticateAndContinue
void
是这样的
我不能把var t=WebAuthenticationBroker.AuthenticateAndContinue
放在
我只想返回以下代码
public async void ContinueWebAuthentication(WebAuthenticationBrokerContinuationEventArgs args)
{
WebAuthenticationResult result = args.WebAuthenticationResult;
if (result.ResponseStatus == WebAuthenticationStatus.Success)
{
//OutputToken(result.ResponseData.ToString());
await GetUserNameAsync(result.ResponseData.ToString());
}
else if (result.ResponseStatus == WebAuthenticationStatus.ErrorHttp)
{
throw new Exception("HTTP Error returned by AuthenticateAsync() : " + result.ResponseErrorDetail.ToString());
}
else
{
throw new Exception("Error returned by AuthenticateAsync() : " + result.ResponseErrorDetail.ToString());
}
}
答案 0 :(得分:1)
虚空不是"类型"它只是意味着该方法没有返回值。您不需要返回声明。
答案 1 :(得分:1)
由于在异步方法中返回void不是很好的做法:
https://msdn.microsoft.com/en-us/magazine/jj991977.aspx
Async void方法具有不同的错误处理语义。当异步任务或异步任务方法抛出异常时,将捕获该异常并将其放在Task对象上。使用async void方法,没有Task对象,因此异步void方法抛出的任何异常都将直接在异步void方法启动时处于活动状态的SynchronizationContext上引发
你应该简单地用任务
替换voidpublic async Task ContinueWebAuthentication(