Получение Google + счет с помощью pos.plusones.get не работает с помощью C # - PullRequest
2 голосов
/ 21 октября 2011

Я пытался найти способ получения информации о количестве посещений в Google+. Я попытался использовать код здесь (слегка измененный): http://johndyer.name/getting-counts-for-twitter-links-facebook-likesshares-and-google-1-plusones-in-c-or-php/. Но я получаю следующую ошибку, когда выхожу на экран:

Google says:[ { "error": { "code": 400, "message": "Invalid Value", "data": [ { "domain": "global", "reason": "invalid", "message": "Invalid Value" } ] }, "id": "p" } ] 

Код моей простой тестовой страницы ниже. Есть идеи?

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write("Google says:" + GetPlusOnes("http://www.google.com"));
}

string GetPlusOnes(string url)
{

    string googleApiUrl = "https://clients6.google.com/rpc"; //?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ";

    string postData = @"[{""method"":""pos.plusones.get"",""id"":""p"",""params"":{""nolog"":true,""id"":""" + url + @""",""source"":""widget"",""userId"":""@viewer"",""groupId"":""@self""},""jsonrpc"":""2.0"",""key"":""p"",""apiVersion"":""v1""}]";

    System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(googleApiUrl);
    request.Method = "POST";
    request.ContentType = "application/json-rpc";
    request.ContentLength = postData.Length;

    System.IO.Stream writeStream = request.GetRequestStream();
    UTF8Encoding encoding = new UTF8Encoding();
    byte[] bytes = encoding.GetBytes(postData);
    writeStream.Write(bytes, 0, bytes.Length);
    writeStream.Close();

    System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
    System.IO.Stream responseStream = response.GetResponseStream();
    System.IO.StreamReader readStream = new System.IO.StreamReader(responseStream, Encoding.UTF8);
    string jsonString = readStream.ReadToEnd();

    readStream.Close();
    responseStream.Close();
    response.Close();

    return jsonString;
    //var json = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(jsonString);
    //int count = Int32.Parse(json[0]["result"]["metadata"]["globalCounts"]["count"].ToString().Replace(".0", ""));

    //return count;
}

Это так просто сделать с Facebook и Twitter, почему Google не может следовать той же схеме? Почему такой сложный?

Ответы [ 2 ]

1 голос
/ 25 октября 2012

Да, вам нужно зарегистрироваться для этого.Иди сюда: https://code.google.com/apis/console/?pli=1#project:352290279458:services

1 голос
/ 21 октября 2011

Так же, как предположение, я предполагаю, что вам нужно закомментировать key со своим, в этой строке:

string googleApiUrl = "https://clients6.google.com/rpc"; //?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ";

так что-то вроде:

string googleApiUrl = "https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ";
...