1

我一直在使用MSDN 文章给出的代码(第 6 步给出的代码)。问题是它使用了 Windows Metro 风格框架中不可用的 HttpUtility WebClient 类,因此我修改了 GetAccessToken(....) 方法,如下所示。

protected OAuthToken GetAccessToken(string secret, string sid)
{
var urlEncodedSecret = WebUtility.UrlEncode(secret);
var urlEncodedSid = WebUtility.UrlEncode(sid);

HttpClient httpClient = new HttpClient();

httpClient.DefaultRequestHeaders.Add("grant_type", "client_credentials");
httpClient.DefaultRequestHeaders.Add("client_id", urlEncodedSid);
httpClient.DefaultRequestHeaders.Add("client_secret", urlEncodedSecret);
httpClient.DefaultRequestHeaders.Add("scope", "notify.windows.com");

Task<string> responseResult = null;

try
{
Task<HttpResponseMessage> response = httpClient.GetAsync("https://login.live.com/accesstoken.srf");

responseResult = response.Result.Content.ReadAsStringAsync();
}
catch (Exception ex)
{
// Display the error message
}

return GetOAuthTokenFromJson(responseResult.Result);
}

问题是它返回“400”错误请求“作为结果。当从谷歌检查时,它表明我没有正确设置标题。正如MSDN 页面所说,我已经设置了所有必需的标题,如下所示来获取访问令牌将用于发送通知

希望有人能帮我弄清楚这一点。谢谢:)

4

0 回答 0