2014-10-02 1 views
0

Visual Studio 2010 Framework 4.0Невозможно создать задание с помощью Google скоординировать службы

Я пытаюсь вставить работу с помощью Google скоординировать API.For вставив работу я попробовал два ways.Using WebRequest и координировать API.But I я не могу вставить задание. Использование Google Coordinate API: получение ошибки «Аутентификация не существует в пространстве имен google.api»

Я установил API-интерфейс google с использованием nuget.I использовал ниже код для вставки задания с использованием координатного API. Но я получаю ошибку на " GoogleAuthenticationServerDescription "строка Ошибка:« GoogleAuthenticationServerDescription не существует в текущем контексте ».

Примечание: Я импортировал Google.Api имен, но я не нашел

Authentication.OAuth2.DotNetOpenAuth in namespace. 

var provider = new WebServerClient(GoogleAuthenticationServer.Description); 
provider.ClientIdentifier =”MyclientID”; 
provider.ClientSecret = “MySecretID; 
var auth = new OAuth2Authenticator<WebServerClient>(provider, GetAuthorization); 
var service = new CoordinateService(new BaseClientService.Initializer()); 
Job jobBody = new Job(); 
jobBody.Kind = "Coordinate#job"; 
jobBody.State = new JobState(); 
jobBody.State.Kind = "coordinate#jobState"; 
jobBody.State.Assignee = "[email protected]"; 

// Создание задания
JobsResource.InsertRequest
INS1 = service.Jobs.Insert (jobBody, "TeamID », "Адрес", 17.854425,75.51869, "Test");

================================================================================================================================== ============================================

Код веб-запроса для ввода задания: в этом случае я получив ошибку, например, 401 (несанкционированный). Я смущен, как передать токен доступа через веб-запрос.

Вот код:

double latitude = Convert.ToDouble(tbLatitude.Text); 
      double longitude = Convert.ToDouble(tbLogitude.Text);    
     String appURL = "https://www.googleapis.com/coordinate/v1/teams/TeamID/jobs/"; 
      string strPostData = String.Format("teams={0},&job={1}&address={2}&lat= 
{3}&lng={4}&title={5}&key={6}",tbTeamID.Text, "?", tbAddress.Text, latitude, 
longitude, tbTitle.Text,"APIKEY"); 

HttpWebRequest wrWebRequest = WebRequest.Create(appURL) as HttpWebRequest; 

wrWebRequest.Method = "POST"; 
UTF8Encoding encoding = new UTF8Encoding(); 
byte[] byteData = encoding.GetBytes(strPostData); 
wrWebRequest.ContentLength = strPostData.Length; 
wrWebRequest.ContentType = "application/json"; 
wrWebRequest.UserAgent = "MyApplication/1.0"; 
wrWebRequest.Referer = "https://www.googleapis.com/coordinate/v1/teams/teamId/jobs"; 

      // Post to the registration form. 

      StreamWriter objswRequestWriter = new 
StreamWriter(wrWebRequest.GetRequestStream()); 

      objswRequestWriter.Write(strPostData); 
      objswRequestWriter.Close(); 

      // Get the response.  
      HttpWebResponse hwrWebResponse = 
(HttpWebResponse)wrWebRequest.GetResponse(); 

      StreamReader objsrResponseReader = new 
StreamReader(hwrWebResponse.GetResponseStream()); 

      string strResponse = objsrResponseReader.ReadToEnd(); 

ответ

0

Почему бы вам не использовать клиентскую библиотеку .NET для Google Maps Coordinate? https://developers.google.com/api-client-library/dotnet/apis/coordinate/v1?

Похоже, что вы не используете поток OAuth 2.0. Подробнее об этом можно узнать в документации клиентской библиотеки - https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth.

Вы также должны взглянуть на один из наших образцов, например, посмотрите в Books sample и, в частности, на код OAuth 2.0. Ваш код должен выглядеть примерно так:

UserCredential credential; 
using (var stream = new FileStream("client_secrets.json", 
            FileMode.Open, FileAccess.Read)) 
{ 
    credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
     GoogleClientSecrets.Load(stream).Secrets, 
     new[] { [CoordinateService.Scope.Coordinate }, 
     "user", CancellationToken.None, 
     new FileDataStore("CredentialsStore")); 
} 

// Create the service. 
var service = new CoordinateService(new BaseClientService.Initializer() 
{ 
    HttpClientInitializer = credential, 
    ApplicationName = "Coordinate .NET library", 
}); 

... and here call one of the service's methods. 

UPDATE (октябрь 9):

Я вижу, что вы обновили код выше, но почему бы вам не использовать последнюю версию API - http://www.nuget.org/packages/Google.Apis.Coordinate.v1/ с последними OAuth 2.0 документацию, о которой я уже говорил - https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth?

Я думаю, вы используете http://www.nuget.org/packages/Google.Apis.Authentication/1.6.0-beta, который был изменен!

+0

Я проверю библиотеку и обновленную клиентскую библиотеку google .net. Я не упоминал в своем первоначальном комментарии, причина использования веб-запроса была, в случае успеха, я могу реализовать в коде MS Access VBA. –

+0

И не можете ли вы сделать это с клиентской библиотекой .NET? – peleyal

+0

при использовании. Пример кода клиентской библиотеки .NET. Я получаю (;) ожидаемую ошибку при определении переменной учетных данных –