【问题标题】:.Net struggles with Webmaster Tools (Google.Apis.Webmasters.v3 Nuget package).Net 与网站管理员工具(Google.Apis.Webmasters.v3 Nuget 包)斗争
【发布时间】:2015-09-11 14:41:48
【问题描述】:

我想知道是否有人通过 .Net 使用 Google Webmaster Tools API 的新搜索分析功能比我更进一步?

我正在使用 Google.Apis.Webmasters.v3 Nuget 包,并且已经完成了身份验证和连接(使用服务帐户)

但是,我很难通过 Search Analytics 获得任何帮助。

我在网上找不到任何代码示例,因此我根据 https://developers.google.com/resources/api-libraries/documentation/webmasters/v3/csharp/latest/annotated.html 的课程信息和大量猜测进行了指导。

这是我正在使用的代码:

SearchanalyticsResource mySearchanalyticsResource = new SearchanalyticsResource(service);

SearchAnalyticsQueryRequest myRequest = new SearchAnalyticsQueryRequest(); 
myRequest.StartDate = "2015-08-01"; 
myRequest.EndDate = "2015-08-31"; 
myRequest.RowLimit = 10;

SearchanalyticsResource.QueryRequest myQueryRequest = mySearchanalyticsResource.Query(myRequest, site.SiteUrl); 
SearchAnalyticsQueryResponse myQueryResponse = myQueryRequest.Execute();

当我得到“发生错误,但错误响应无法反序列化”时,它运行正常,直到 Execute 方法。下面的异常详细信息...

Newtonsoft.Json.JsonReaderException {"解析 NaN 值时出错。路径'',第 0 行,位置 0。"}

我们将不胜感激地收到任何帮助或代码示例!

【问题讨论】:

    标签: c# .net google-api google-api-dotnet-client google-api-webmasters


    【解决方案1】:

    这会编译,但它不会为我返回任何数据。

    授权:

     public static WebmastersService WMAuthenticateOauth(string clientId, string clientSecret, string userName)
            {
    
                string[] scopes = new string[] { WebmastersService.Scope.Webmasters };     // View analytics data
    
                try
                {
                    // here is where we Request the user to give us access, or use the Refresh Token that was previously stored in %AppData%
                    UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets { ClientId = clientId, ClientSecret = clientSecret }
                                                                                                 , scopes
                                                                                                 , userName
                                                                                                 , CancellationToken.None
                                                                                                 , new FileDataStore(".", true)).Result;
    
                    WebmastersService service = new WebmastersService(new BaseClientService.Initializer()
                    {
                        HttpClientInitializer = credential,
                        ApplicationName = "WebMasters API Sample",
                    });
                    return service;
                }
                catch (Exception ex)
                {
    
                    Console.WriteLine(ex.InnerException);
                    return null;
    
                }
    
            }
    

    请求

    var service = Authentcation.WMAuthenticateOauth(clientid, secret, "testmmm");
    
    
       IList<string> newlist = new List<string> ();
       newlist.Add("country");
       newlist.Add("device");
    
       SearchAnalyticsQueryRequest body = new SearchAnalyticsQueryRequest();
       body.StartDate = "2015-04-01";
       body.EndDate = "2015-05-01";
       body.Dimensions = newlist;
    
       var result = service.Searchanalytics.Query(body, "http://www.daimto.com/").Execute();
    

    我还尝试使用 page 底部的 try me 进行测试。它也不返回任何东西。

    奇怪的 API 这个。

    更新:

    我终于找回了数据,我将日期设置为

    body.StartDate = "2015-09-01";
    body.EndDate = "2015-09-15";

    不知道这东西是不是数据有限,只能回溯到现在。

    【讨论】:

    • 非常感谢您的帮助。遗憾的是,该代码在 Execute 行导致与我的错误消息相同:{“解析 NaN 值时出错。路径'',第 0 行,位置 0。”}
    • NP 玩新 API 总是很有趣 :)
    • 啊,有道理。网站管理员工具仅存储 90 天的数据。
    • 很高兴你有数据!不幸的是,最近的日期我仍然遇到同样的错误。我正在使用服务帐户和密钥文件进行原始授权——我不知道这是否会产生任何影响。尝试改用您的代码,但 OAuth 一直使用不同的端口号,因此它永远不会“匹配已注册的重定向 URI”。
    • 使用本地客户端 ID 而不是 Web 进行测试。需要以某种方式授予服务帐户访问权限,我会在晚餐后查看它
    猜你喜欢
    • 2011-11-11
    • 1970-01-01
    • 2015-04-10
    • 2013-11-16
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    相关资源
    最近更新 更多