Unify Circuit OAuth2 - почему Body возвращает пустой [] из запросов REST API? - PullRequest
0 голосов
/ 22 июня 2019

Когда я пытаюсь использовать REST API с токеном oauth 2.0, я получаю пустые результаты [] под телом с кодами состояния OK-200 в заголовках.

Я создал бота и протестировал остальные API с curl + базовой аутентификацией, а также с swagger, и они отлично работают. Я проверил свою команду curl, используя oauth 2.0 с токеном swagger, и это тоже отлично работает.

Я пробовал разные настройки для тестирования, но придерживаться базы:

  • Я создал бота в пользовательских приложениях, для областей выбрано «Все», для TTL - «навсегда».

  • Я успешно запросил и получил свой токен через REST со следующими областями: 'READ_USER_PROFILE, WRITE_USER_PROFILE, READ_CONVERSATIONS, WRITE_CONVERSATIONS, READ_USER'.

  • Я заметил, что область действия «ВСЕ» не работает, он возвращает «invalid_client. Нулевое значение приложения не включено для области :: = [ВСЕ]», но тот же клиент работает без какой-либо из указанных выше областей. упоминается вместе или самостоятельно, кроме «ВСЕ».

  • Я убедился, что у меня есть необходимые области для API REST, которые я тестировал, например, «READ_CONVERSATIONS» для «/ разговоров»

  • Я вообще не получаю 401 или другие коды ошибок, только 200.

  • Я протестировал те же команды с токеном, сгенерированным swagger, и тот, который возвращает строку тела с результатами (другими словами, этот токен работает)

  • Я повторил те же проблемы с Postman и PowerShell Invoke-WebRequest / Invoke-RestMethod.

  • Не уверен, связано ли это, но я заметил, что в веб-приложении больше не существует параметров «Приложения OAuth»: веб-клиент в разделе «Администрирование»> «Приложения OAuth». На вкладке «Приложения OAuth» включите «Приложения OAuth» в «Настройках»> «Circuit Labs».

\\Requesting token:
curl -X POST https://circuitsandbox.net/oauth/token -d "client_id=myclientidhere&client_secret=myclientsecrethere&grant_type=client_credentials&scope=READ_USER_PROFILE,WRITE_USER_PROFILE,READ_CONVERSATIONS,WRITE_CONVERSATIONS,READ_USER" -i

{"access_token":"myaccesstokenhere","token_type":"Bearer","scope":["READ_USER_PROFILE","WRITE_USER_PROFILE","READ_CONVERSATIONS","WRITE_CONVERSATIONS","READ_USER"]}

\\Making request:
curl -i "https://circuitsandbox.net/rest/v2/conversations" -H "Authorization: Bearer myaccesstokenhere" -i
[]
\\\Full sample (-i parameter):
\\Requesting token:
curl -X POST https://circuitsandbox.net/oauth/token -d "client_id=myclientidhere&client_secret=myclientsecrethere&grant_type=client_credentials&scope=READ_USER_PROFILE,WRITE_USER_PROFILE,READ_CONVERSATIONS,WRITE_CONVERSATIONS,READ_USER" -i

HTTP/1.1 200 OK
Date: Sat, 22 Jun 2019 01:21:43 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 179
Connection: keep-alive
access-control-allow-origin: *
access-control-allow-credentials: true
access-control-allow-methods: GET, POST, DELETE, PUT, PATCH, OPTIONS
access-control-allow-headers: Accept, Accept-Language, User-Agent, Origin, Connection, Host, Accept-Encoding, Authorization, Content-Type, api_key, apiKey
ETag: W/"b3-K441G+yOERm+Qhj2E8VpkzO8ISg"
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=157680000; includeSubdomains; preload

{"access_token":"myaccesstokenhere","token_type":"Bearer","scope":["READ_USER_PROFILE","WRITE_USER_PROFILE","READ_CONVERSATIONS","WRITE_CONVERSATIONS","READ_USER"]}

\\Making request:
curl -i "https://circuitsandbox.net/rest/v2/conversations" -H "Authorization: Bearer myaccesstokenhere"

HTTP/1.1 200 OK
Date: Sat, 22 Jun 2019 01:25:37 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 2
Connection: keep-alive
access-control-allow-origin: *
access-control-allow-credentials: true
access-control-allow-methods: GET, POST, DELETE, PUT, PATCH, OPTIONS
access-control-allow-headers: Accept, Accept-Language, User-Agent, Origin, Connection, Host, Accept-Encoding, Authorization, Content-Type, api_key, apiKey
ETag: W/"2-l9Fw4VUO7kr8CvBlt4zaMCqXZ0w"
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=157680000; includeSubdomains; preload

[]

Я ожидаю, что вывод будет включать вывод тела запроса, например,

{"type":"COMMUNITY","convId":"5fad5fa4-1097-d66f-083a-3f129214e99f","participants":["5fad5fa4-1097-d66f-083a-3f129214e99f","5fad5fa4-1097-d66f-083a-3f129214e99f","5fad5fa4-1097-d66f-083a-3f129214e99f","5fad5fa4-1097-d66f-083a-3f129214e99f"],"topic":"YourCompany","creationTime":1560992185888,"modificationTime":1561143383261,"creatorId":"5fad5fa4-1097-d66f-083a-3f129214e99f","creatorTenantId":"5fad5fa4-1097-d66f-083a-3f129214e99f","description":"Default open conversation for YourCompanyHere"}

Но фактический результат: [ ]

Ответы [ 2 ]

1 голос
/ 22 июня 2019

Только что проверил, и я вернул разговоры (и сообщества). Это не вернет ваши разговоры, но разговоры, в которых участвует бот. Убедитесь, что бот является участником разговора.

0 голосов
/ 24 июня 2019

, как упоминалось в ответе выше, это было частью того, чего мне не хватало, я все еще получал пустые ответы даже после добавления бота в разговор.Я также столкнулся со всевозможными странными проблемами, например, с ошибками при попытке добавить старого бота в новые разговоры и т. Д. Причина в том, что я использовал один и тот же адрес электронной почты для своей учетной записи в изолированной программной среде и для бота, так чтовероятно, создал конфликт.Короче, вот что у меня сработало:

1.Создан новый бот с адресом электронной почты, отличным от адреса моей песочницы (даже поддельная электронная почта работает)

2.Добавил бота в разговор по адресу электронной почты (имя бота не подняло его) - Спасибо @ Roger

3.Запускал те же команды для создания токена и использования API, на этот раз это удалось!

Помогите выяснить, выпустить и исправить исправленный коллегой в другой песочнице (спасибо Рики Эль-Касем!), Протестированов почтальоне, curl и PowerShell.

...