我正在UWP程序中获取OAuth AccessToken。但是似乎我的身份验证过程与其他人(Facebook或Google的OAuth等)不同。 Microsoft示例或在线教程不起作用。
基本上,我有一个Auth服务器(来自服务提供商),我的服务器和客户端。
该过程应为:
1.客户端进入身份验证服务器,输入用户名和密码
2.提交后,客户端将使用代码重定向到我的服务器
3.我的服务器将代码发布到Auth服务器,获取AccessToken并将其返回给客户端。
如果我尝试通过Chrome进行身份验证,则效果很好。
问题出在第二步。客户端应重定向到http://[MyServer]/callback?code=[code]
。但是似乎WebAuthenticationBroker
没有重定向。我的服务器未收到任何请求。而WebAuthenticationResult.ResponseData.ToString()
是所谓的redirect_uri,类似http://[MyServer]/callback?code=[code]
。
我的代码是这样的:
string startURL = string.Format("https://[AuthServer]/oauth/authorize?client_id={0}&response_type=code", Settings.ClientID);
string endURL = "http://[MyServer]/callback";
Uri startURI = new Uri(startURL);
Uri endURI = new Uri(endURL);
string result;
try
{
var webAuthenticationResult =
await WebAuthenticationBroker.AuthenticateAsync(
WebAuthenticationOptions.None,
startURI,
endURI);
switch (webAuthenticationResult.ResponseStatus)
{
case WebAuthenticationStatus.Success:
result = webAuthenticationResult.ResponseData.ToString();
break;
case WebAuthenticationStatus.ErrorHttp:
result = webAuthenticationResult.ResponseErrorDetail.ToString();
break;
default:
result = webAuthenticationResult.ResponseData.ToString();
break;
}
}
catch (Exception ex)
{
result = ex.Message;
}
return result;