在Google+ API上struggling to authenticate之后,我终于成功使用https://www.googleapis.com/plus/v1/people/ {MyUserId}检索了我的信息?key = {ApiKey}
然而,尽管我确实获得了范围为https://www.googleapis.com/auth/plus.me的访问令牌,但我无法请求“我”:https://www.googleapis.com/plus/v1/people/me?key= {ApiKey}
我最终得到了401未经授权的请求......现在已经很晚了,而且我没有得到我所遗漏的内容。
这是我的代码:
string apiUrl = "https://www.googleapis.com/plus/v1/people/me?key={my api key";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiUrl);
request.Method = HttpMethod.GET.ToString();
try
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
=> 401 error
感谢您的帮助!
答案 0 :(得分:2)
这不会直接回答您的问题,但您是否尝试过用于.NET的Google API客户端库?
请参阅:http://code.google.com/p/google-api-dotnet-client/
http://code.google.com/p/google-api-dotnet-client/wiki/OAuth2
http://code.google.com/p/google-api-dotnet-client/wiki/APIs#Google+_API
401错误很可能意味着您的访问令牌已过期,需要使用刷新令牌刷新。
答案 1 :(得分:0)
我已经晚了3年,但是在寻找几乎完全相同的问题的解决方案时,我发现了这篇文章。我试图避免使用谷歌的API,所以我想我会发布我自己的解决方案,万一有人想要在没有谷歌API的情况下想办法做到这一点。我正在使用RestSharp来处理HTTP请求,但这不是必需的。
//craft the request
string requestUrl = "https://www.googleapis.com/plus/v1/people/me?access_token=" + AccessToken;
RestClient rc = new RestClient();
RestRequest request = new RestRequest(requestUrl, Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("x-li-format", "json");
request.RequestFormat = DataFormat.Json;
//send the request, and check the response.
RestResponse restResponse = (RestResponse)rc.Execute(request);
if (!restResponse.ResponseStatus.Equals(ResponseStatus.Completed)) { return null; }
与问题中原始实现的主要区别并不在于我使用的是RestSharp - 这是微不足道的。主要区别在于我在查询字符串中传递了access_token而不是密钥。