0

很长一段时间以来,我一直在使用 ClientLogin 身份验证在 C# 代码中访问谷歌阅读器。我一直在为 Windows 8 开发 Google Reader 客户端,并决定使用更安全的 OAuth 2 身份验证。我可以登录、获取访问令牌和刷新令牌,但我未能使用访问令牌进行任何 api 调用,得到 401 Unauthorized 错误。我的令牌带有许多以“ya29.”开头的字符。我希望令牌是正确的。我正在使用 HttpClient 类,同时将“授权:”标头传递给它。有人可以帮我吗?下面是我的代码片段

private async Task<string> HttpGet()
    {
    string url = "http://www.google.com/reader/api/0/subscription/list";
        HttpClient client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", 
            String.Format("OAuth access_token={0}", Token);

        var response = await client.GetAsync(url);
        var content = await response.Content.ReadAsStringAsync();
        return content;
    }
4

3 回答 3

1

看来您没有使用正确的 Authorization 标头格式。根据https://developers.google.com/accounts/docs/OAuth2WebServer#callinganapi,标题应为:

Authorization: Bearer ya29.xxxxxxxxxxxx
于 2013-01-13T22:42:48.643 回答
0

我推荐使用 RestSharp。它比 HttpClient 更容易使用,此外还支持 OAuth 1 和 2。这里有一个关于如何使用它的教程:

http://www.codeproject.com/Articles/321291/Google-OAuth2-on-Windows-Phone

于 2013-01-10T09:25:14.787 回答
0

我可以提个建议吗?

我讨厌编写 oauth 代码。

将 Google 身份验证添加到应用程序的最简单方法是使用 Windows Azure 移动服务 (WAMS)。WAMS 将通过他们的 SDK 为您处理 oauth 详细信息,该 SDK 还支持 Live ID、FaceBook 和 Twitter。它是 C# 和 JavaScript、Android 和 iOS。最重要的是,它是免费的。

引用: http: //www.windowsazure.com/en-us/home/features/mobile-services/

于 2013-01-11T05:59:29.560 回答