2013-11-08 2 views
1

Я пытаюсь использовать google analytics apis v3 для встраивания графа аналитики на свой сайт с помощью файла сертификата. Я получил его для работы на локальной машине, но когда я развожу код на свой веб-сервер, он вызывает эту ошибку:google analytics apis не работает в производстве

Удаленный сервер возвратил ошибку: (400) Плохой запрос.

Кто-нибудь знает, что вызывает это сообщение об ошибке, и почему я не могу получить график google на моем веб-сайте?

Вот код, который работает на моей локальной машине:

string scope = AnalyticsService.Scopes.AnalyticsReadonly.GetStringValue(), 
        x509Certificate2File = HttpContext.Current.Server.MapPath("~/App_Data/privatekey.p12"), 
        x509Certificate2FilePassword = "notasecret", 
        serviceAccountId = "[email protected]", 
        profileId = "ga:xxxxxxxx", 
       startDate = "2013-10-06", 
      endDate = "2013-11-07"; 

      AuthorizationServerDescription desc = GoogleAuthenticationServer.Description; 

      X509Certificate2 key = new X509Certificate2(x509Certificate2File, x509Certificate2FilePassword, X509KeyStorageFlags.Exportable); 

      AssertionFlowClient client = new AssertionFlowClient(desc, key) { ServiceAccountId = serviceAccountId, Scope = scope }; 

      OAuth2Authenticator<AssertionFlowClient> auth = new OAuth2Authenticator<AssertionFlowClient>(client, AssertionFlowClient.GetState); 

      AnalyticsService gas = new AnalyticsService(new BaseClientService.Initializer() { Authenticator = auth }); 

    DataResource.GaResource.GetRequest request = gas.Data.Ga.Get(profileId, startDate, endDate, "ga:visits"); 

    request.Dimensions = "ga:day"; 
    request.MaxResults = 10; 

    /* error 400 occur here on the production */ 
    Google.Apis.Analytics.v3.Data.GaData data = request.Execute(); 

Благодарности

+0

Являетесь ли вы производственным сервером в другом часовом поясе? Если это так, это может испортить подпись. –

+0

производство находится в том же часовом поясе, где я живу – Noob

ответ

0

Существует только одна возможность и не глядя на код, который вы собираетесь должны преследовать его вниз; один из путей неправильный и нуждается в изменении. Это может быть также в виде IP-адреса, когда я говорю «путь», когда вы вызываете то, чего там нет. Он отлично работал на вашей локальной машине (правильный путь), и он дал 400 на удаленном (плохой запрос), как при вызове неправильного места.

+0

Он читает файл сертификата и продолжает работать до тех пор, пока не выполнит код «Google.Apis.Analytics.v3.Data.GaData data = request.Execute();» что там, где возникает ошибка 400. вот код. string startDate = "2013-11-06", endDate = "2013-11-07", \t profileId = "ga: xxxxxxxx"; DataResource.GaResource.GetRequest request = gaAuth.GAS.Data.Ga.Get (profileId, startDate, endDate, "ga: visitors"); request.Dimensions = "ga: visitorType"; /* ошибка 400 в этой строке */ Google.Apis.Analytics.v3.Data.GaData data = request.Execute(); – Noob

Смежные вопросы