Google+ API让人们“我”

时间:2011-09-23 21:13:56

标签: c# google-api google-plus

在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

感谢您的帮助!

2 个答案:

答案 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而不是密钥。