2015-02-11 2 views
0

Я пытаюсь написать консольное приложение для использования Google Prediction. Я не могу понять, что я делаю неправильно. Я продолжаю получать «Недостаточные разрешения». Как я могу это исправить. Как можно увидеть, какой запрос действительно создается?Недостаточно Права разрешений

//Desired Request: GET https://www.googleapis.com/prediction/v1.6/projects/1043149216958/trainedmodels/list?    
    //      pageToken=%22%22&maxResults=5&key={YOUR_API_KEY} 

    public async Task Run() 
    { 
     UserCredential credential; 
     using (var stream = new FileStream("Aggreate Volume 1 Client Secret.json", FileMode.Open, FileAccess.Read)) 
     { 
      credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
       GoogleClientSecrets.Load(stream).Secrets, 
       new[] {PredictionService.Scope.DevstorageFullControl}, 
       "user", CancellationToken.None); 
     } 

     var service = 
      new PredictionService(
       new BaseClientService.Initializer() { 
        HttpClientInitializer = credential, 
        ApplicationName = "Aggregate Volume 2" 
        } 
       ); 

     try 
     { 
      var response = service.Trainedmodels.List().Execute(); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine("An error occurred: " + e.Message); 
     } 
    } 

ответ

0

Я получил это для работы, внес ряд изменений. Из Google Developers Console я получил следующую информацию (я решил сделать имя проекта и имя продукта таким же, они могут быть разными..):

API:    Prediction API v1.6 
    Project Name:  Aggregate Volumes MTFE 
    Project ID:   golden-sentry-848 
    Project No:   1043149216958 
    Product Name:  Aggregate Volumes MTFE 
    Predictive Model: mtfe 

версия API является очень важным. Установленный пакет и операторы использования должны соглашаться. Пакет загрузка

Install-Package Google.Apis.Prediction.v1_6 

и требуемые с помощью утверждения:

using Google.Apis.Auth.OAuth2; 
using Google.Apis.Prediction.v1_6; 
using Google.Apis.Prediction.v1_6.Data; 
using Google.Apis.Services; 

Есть некоторые проблемы именования, которые вызвали меня некоторую путаницу. Когда вы инициализируете Службы прогноза, ApplicationName - это имя продукта, указанное в Консоли Google Developers Console. Параметр, требуемый в service.Trainedmodels.List - это номер проекта, назначенный при создании проекта в Google Developers Console. Вот код:

public async Task 
    Run() { 
     UserCredential credential; 
     using (var stream = new FileStream("Aggregate Volumes MTFE Client Secret.json", FileMode.Open, FileAccess.Read)) { 
      credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
       GoogleClientSecrets.Load(stream).Secrets, 
       new[] {PredictionService.Scope.Prediction}, 
       "user", CancellationToken.None); 
      } 

     var service = 
      new PredictionService(
       new BaseClientService.Initializer() { 
        HttpClientInitializer = credential, 
        ApplicationName = "Aggregate Volumes MTFE" 
        } 
       ); 

     try { 
      var pre = service.Trainedmodels.List("1043149216958"); 
      var response = pre.Execute(); 
      } 
     catch (Exception e) { 
      Console.WriteLine("An error occurred: " + e.Message); 
      } 
     } 
+0

Вы создали новый логин для ответа на свой вопрос? –

+0

Дэвид, я не знаю, как у меня два входа. Это, конечно, не мое намерение. Для проверки функционирования кода потребовалось немало экспериментов и работы. Моя цель - дать другим исходную позицию, которая действительно работает. – SaulN

+0

Все нормально. Я переформатировал ваш вопрос, чтобы он выглядел больше похожим на обычный C# и меньше похожим на JavaScript, что, возможно, путало некоторых читателей. –

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