我正在创建一个windows 8 metro应用程序,但我在获得oauth2访问令牌时遇到了麻烦。我可以用下面的代码得到临时代码:
Uri requestUri = new Uri(string.Format(AUTH_URL + "?client_id={0}&response_type=code&scope={1}&client_secret={2}&redirect_uri={3}", CLIENT_ID, string.Join("|", scopeList.ToArray()), CLIENT_SECRET, WebAuthenticationBroker.GetCurrentApplicationCallbackUri().AbsoluteUri));
WebAuthenticationResult result = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, requestUri);
但是当我尝试使用该代码来获得永久访问令牌时,它会给我一个内部服务器错误(500)或超时。当我没有redirect_uri时,它会给我一个500,所以我保留它。否则,我的请求只是超时,没有响应,代码如下:
private const string TOKEN_URL = "https://www.dwolla.com/oauth/v2/token";
Uri requestUri = new Uri(string.Format(TOKEN_URL + "?client_id={0}&client_secret={1}&grant_type={2}&code={3}&redirect_uri={4}", CLIENT_ID, CLIENT_SECRET, GRANT_TYPE, code, WebAuthenticationBroker.GetCurrentApplicationCallbackUri().AbsoluteUri)));
WebAuthenticationResult result = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.SilentMode, requestUri);
所有的字符串都是uri转义的。我只是不知道我做错了什么。
使用WebAuthenticationOptions之外的任何选项。选项SilentMode只显示一个正在加载的浏览器窗口
我也不能使用为c#制作的OAuth库,因为它们使用。net framework,而Windows 8应用程序使用。net core,一个精简版本。
如果有任何帮助就太好了
requestUri
在临时代码和重定向永久访问令牌之间看起来不同。