0

我正在创建一个 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 库,因为它们使用 .NetFramework 而 Windows 8 应用程序使用 .NetCore,这是一个精简的版本。

任何帮助都会很棒

4

1 回答 1

1

requestUri临时代码和重定向永久访问令牌之间的外观不同。它必须是完全相同的东西。

于 2013-04-23T01:48:54.720 回答