在Windows 8.1上没有单点登录到Goodreads的结果

时间:2014-11-19 16:42:09

标签: c# oauth winrt-xaml windows-8.1

我正在尝试使用goodreads登录。 我正在调用WebAuthenticationBroker,它会打开一个叠加层来登录。这个到目前为止有效,但我无法在登录后关闭叠加层。我也没有取得成功。在使用backarrow时,我得到一个" UserCanceled"结果

这是我到目前为止所得到的:

string goodreadsURL = "https://www.goodreads.com/oauth/authorize?oauth_token=" + Properties.OAuth_token;

Uri sid = WebAuthenticationBroker.GetCurrentApplicationCallbackUri();
string callbackURL = sid.ToString();

var startUri = new Uri(goodreadsURL);

WebAuthenticationResult result = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, startUri, new Uri(callbackURL));
if (result.ResponseStatus == WebAuthenticationStatus.Success && !result.ResponseData.Contains("&error="))
{
    [...]
}

我发现了一个类似的问题Cannot get Facebook single signon with windows 8.1 to work,但建议的答案对我的情况不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为这可能表示OAuth回调网址没有被导航到代码中,而且似乎没有指定。您可能需要添加它。试试这个:

string goodreadsURL =
    "https://www.goodreads.com/oauth/authorize?oauth_token=" + Properties.OAuth_token;

Uri sid = WebAuthenticationBroker.GetCurrentApplicationCallbackUri();
string callbackURL = sid.ToString();

var startUri =
    new Uri(goodreadsURL + "&oauth_callback=" + Uri.EscapeDataString(callbackURL));

WebAuthenticationResult result =
    await WebAuthenticationBroker.AuthenticateAsync(
        WebAuthenticationOptions.None,
        startUri,
        new Uri(callbackURL));

if (result.ResponseStatus == WebAuthenticationStatus.Success &&
    !result.ResponseData.Contains("&error="))
{
    [...]
}

检查提及回调的文档: https://www.goodreads.com/api/documentation