Рейтинг:
0
Graeme_Grant
Я работаю с API Google Drive, но принцип тот же.
Вам нужно смотреть не только на код состояния, но и на возвращаемые данные ответа. Вот пример такого Плохой (Google Диск) Запрос:
POST https://www.googleapis.com/oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 65
Expect: 100-continue
Connection: Keep-Alive
client_id=&client_secret=&grant_type=refresh_token&refresh_token=
и данные об ответах google
HTTP/1.1 400 Bad Request
Vary: X-Origin
Content-Type: application/json; charset=UTF-8
Date: Tue, 07 Mar 2017 06:02:05 GMT
Expires: Tue, 07 Mar 2017 06:02:05 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Alt-Svc: quic=":443"; ma=2592000; v="36,35,34"
Accept-Ranges: none
Vary: Origin,Accept-Encoding
Transfer-Encoding: chunked
{
"error": "invalid_request",
"error_description": "Missing required parameter: refresh_token"
}
ОБНОВЛЕННЫЙ
Это страница API для конечной точки, которую вы вызываете:
События: смотреть | Google Calendar API | Разработчики Google[
^]
В документе говорится, что запрос представляет собой пакет Json:
In the request body, supply data with the following structure:
{
"id": string,
"token": string,
"type": string,
"address": string,
"params": {
"ttl": string
}
}
Ваши данные находятся в неправильном виде. Таким образом, вы правильно получаете
Ошибка Синтаксического Анализа ответ.
Обновление 2 re: ошибка авторизации
Сначала вам нужно пройти аутентификацию, чтобы получить доступ к вашим личным данным, прежде чем вы сможете опубликовать изменения. Аутентификация-это нечто большее, чем код, который вы предоставили для своей проблемы. Вам нужно выполнить шаги, описанные в следующей ссылке:
[
^]
После того как вы устранили ошибку авторизации, вы можете попробовать создать свой webhook.
vamsi2710
Я пытаюсь создать его программно, но не вижу результатов ответа...Можете ли вы дать мне знать, где и как я могу увидеть детали моего плохого запроса
Graeme_Grant
в ответном теле ... прочтите ответ так же, как вы бы прочитали любые возвращенные данные.
vamsi2710
Это то, что я получаю в трассировке стека в ответе
в системе.Нет.Класса HttpWebRequest.Творческий()
в calendarquickstart.Программы.Основные(string[] аргументы) в c:\users\haanapoc\documents\visual студия 2010\проекты\calendarquickstart\calendarquickstart\программы.CS:линия 95
в системе.AppDomain. _nExecuteAssembly (сборка RuntimeAssembly, String[] args)
в системе.домен приложений.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
в корпорации Microsoft.VisualStudio.Хостингпроцесс.HostProc.RunUsersAssembly()
в системе.Нарезание резьбы.ThreadHelper.ThreadStart_Context(состояние объекта)
в системе.Нарезание резьбы.Параллельном режиме.RunInternal(параллельном режиме параллельном режиме, ContextCallback обратного вызова, состояние объекта, логическое preserveSyncCtx)
в системе.Нарезание резьбы.Параллельном режиме.Выполнения(в параллельном режиме параллельном режиме, ContextCallback обратного вызова, состояние объекта, логическое preserveSyncCtx)
в системе.Нарезание резьбы.ExecutionContext. Run(ExecutionContext executionContext, ContextCallback callback, состояние объекта)
vamsi2710
HTTP/1.1 400 плохой запрос
Различаются: Х-Происхождения
Content-Type: application/json; charset=UTF-8
Дата: Вт, 07 марта 2017 06: 30:57 GMT
Срок действия: Вт, 07 марта 2017 06: 30:57 GMT
Cache-Control: private, max-age=0
Х-тип содержимого-варианты: nosniff
X-Frame-опции: SAMEORIGIN
X-XSS-защита: 1; режим=блок
Сервер: GSE
Alt-Svc: quic=": 443"; ma=2592000; v= " 36,35,34"
Accept-диапазоны: нет
Различаются: Происхождение, Прием-Кодировка
Кодирования передачи: поблочное
ab
{
"ошибка": {
"ошибки": [
{
"домен": "глобальный",
"причина": "parseError",
"сообщение": "Ошибка синтаксического анализа"
}
],
"код": 400,
"сообщение": "Ошибка синтаксического анализа"
}
}
0
Graeme_Grant
parseError
предполагает, что данные, которые вы отправляете, находятся не в правильном формате.
Graeme_Grant
Обновил свое решение дополнительной информацией.
vamsi2710
Привет Грант,
Спасибо за ответ...Я внес изменения, как вы просили.Теперь я получаю ответ: "401: несанкционированная ошибка"
Не могли бы вы помочь мне с этим
HttpWebRequest request1 = (HttpWebRequest)WebRequest.Создать("https://www.googleapis.com/calendar/v3/calendars/floristpanel@gmail.com/events/watch");
запрос 1.Method = " POST";
запрос 1.Headers. Add ("Authorization", "Bearer" + accesstoken);
запрос 1.ContentType = " application/json";
используя (ВАР модулю записи StreamWriter = новая модулю записи StreamWriter(запроса1.Метод getrequeststream()))
{
строку JSON = "{\"введите\":\"web_hook\"," +
"\"адрес\":\"https://www.hanafloralpos.com/notification.aspx\"," +
"\"фишка\":\"ya29.dsgfjksdgjkfgskdjhfksdhhdfhsdkl\"," +
"\"id\": \ " 01234567-89ab-cdef-0123456789ab\"}";
модулю записи StreamWriter.Write(json);
модулю записи StreamWriter.Промывать();
модулю записи StreamWriter.Закрывать();
}
var httpResponse = (HttpWebResponse)request1. GetResponse();
используя (вар что streamreader = новый поток streamreader(объект HttpResponse.GetResponseStream()))
{
ВАР результат = что streamreader.ReadToEnd();
}
vamsi2710
Привет,
Спасибо за ответ.Я попробовал в библиотеке, которую вы предоставили, и я получаю ошибку как :
{
"ошибка": {
"ошибки": [
{
"домен": "глобальный",
"причина": "толчок.webhookUrlUnauthorized",
"сообщение": "несанкционированный канал обратного вызова WebHook: https://www.hanafloralpos.com/notification.aspx"
}
],
"код": 401,
"сообщение": "несанкционированный канал обратного вызова WebHook: https://www.hanafloralpos.com/notification.aspx"
}
}
vamsi2710
Я перерегистрировал свой домен таким же образом...но я все еще не уверен, почему я получаю несанкционированную ошибку...Можете вы пожалуйста помочь мне в этом Рег...Я могу отправить вам код, если это необходимо
Graeme_Grant
Я по горло увяз в сложном XML-коде, поэтому не могу вам помочь, если вы не хотите делать мою работу за меня...
Но быстро ошибка становится тем, что она есть - вы не передаете действительный токен авторизации. подробнее об этом вы можете прочитать здесь:
Авторизация запросов API[^]
vamsi2710
Я добавил сгенерированный токен запроса, но все еще получаю ту же проблему :(
HttpWebRequest request1 = (HttpWebRequest)WebRequest.Создать("https://www.googleapis.com/calendar/v3/calendars/floristpanel@gmail.com/events/watch");
запрос 1.Method = " POST";
запрос 1.Headers. Add ("Authorization", "Bearer" + accesstoken);
запрос 1.ContentType = " application/json";
используя (ВАР модулю записи StreamWriter = новая модулю записи StreamWriter(запроса1.Метод getrequeststream()))
{
строку JSON = "{\"введите\":\"web_hook\"," +
"\"адрес\":\"https://www.hanafloralpos.com/notificationnew.aspx\"," +
"\"token\":\"ya29.GlsHBHxTCEnbrV-B_cz-YJpNRUTJlVKiDZTw1Tpl65xuWkeXfdFuwzs5umxuqv641rab11tzhkjdhmhfqo28d3gtnsv6ux8m02dryfexur-F5rJ8LBTqPksD31UT\", " +
"\"id\": \ " 01234567-89ab-cdef-0123456789ab\"}";
модулю записи StreamWriter.Write(json);
модулю записи StreamWriter.Промывать();
модулю записи StreamWriter.Закрывать();
}
var httpResponse = (HttpWebResponse)request1. GetResponse();
используя (вар что streamreader = новый поток streamreader(объект HttpResponse.GetResponseStream()))
{
ВАР результат = что streamreader.ReadToEnd();
}
Graeme_Grant
Вы читали ссылку на документацию, которую я вам предоставил? Можете ли вы подтвердить подлинность?
PS: Не размещайте код в ответах, вот для чего этот вопрос. Пожалуйста, нажмите на кнопку улучшить вопрос и обновите эту дополнительную информацию.
vamsi2710
Нет, я не могу подтвердить подлинность...Он выдает ту же самую несанкционированную ошибку....Не могли бы вы уделить несколько минут изучению кода на моем конце?..Как это действует мне на нервы :(
Graeme_Grant
вам нужно сделать это сначала, прежде чем вы сможете публиковать данные. Аутентификация-это нечто большее, чем предоставленный код. Вам нужно выполнить шаги по ссылке, которая была предоставлена. Если OAuth 2.0 слишком сложен, то используйте их lib.
vamsi2710
Я попытался проверить то же самое в следующем url-адресе : https://developers.google.com/google-apps/calendar/v3/reference/events/watch
предоставив параметры: calendarId : floristpanel@gmail.com
Я не передаю токен, так как он упоминается как необязательный...
{
"id": "01234567-89ab-cdef-0123456789abc",
"тип": "web_hook",
"адрес": "https://www.hanafloralpos.com/notificationnew.aspx",
"параметры": {
"ttl": "640000"
},
}
Graeme_Grant
Опять же, не публикуйте эту информацию здесь, добавьте ее в вопрос, чтобы другие могли видеть.
vamsi2710
хорошо, я добавлю...но не могли бы вы, пожалуйста, дать мне знать, что я упускаю или делаю это неправильно
vamsi2710
Я получаю это исключение :
"домен": "глобальный",
"причина": "толчок.webhookUrlUnauthorized",
"сообщение": "несанкционированный канал обратного вызова WebHook: https://www.hanafloralpos.com/notificationnew.aspx"