2017-02-21 6 views
0

По-видимому, существует конфликт между проверкой запроса и требованиями запроса. Для вызова API требуется, чтобы область была установлена ​​в «приложение». Для этого также требуется userId. Однако, когда они объединены, вы получаете приведенные ниже сообщения, указывающие, что вы не можете их комбинировать.Smooch Pre-Create App Пользовательский API требует приложения с областью видимости и userId, но также не позволяет userId с областью приложения

API https://docs.smooch.io/rest/#pre-create-app-user

ЗАПРОС

{ host: 'api.smooch.io', 
    path: '/v1/appusers', 
    method: 'POST', 
    headers: { 
    'Content-Type': 'application/json', 
    'Authorization': `Bearer ${token}` 
} 

Пример тела.

{ 
    scope: 'app', 
    userId: 'some_userId', 
    credentialRequired: true, 
    email: '[email protected]', 
    properties: { picture: 'https://s.gravatar.com/avatar/.....' } 
} 

РЕАКЦИЯ ТЕЛА

{"error":{"code":"bad_request","description":"Invalid JWT body. Cannot use userId param with app scope"}} 

РЕАКЦИЯ HEADERS

{ connection: 'close', 
    server: 'nginx', 
    date: 'Tue, 21 Feb 2017 14:47:50 GMT', 
    'content-type': 'application/json; charset=utf-8', 
    'content-length': '105', 
    'x-powered-by': 'Express', 
    vary: 'X-HTTP-Method-Override', 
    etag: 'W/"69-huba/v8EazhrDAoySthrKw"', 
    via: '1.1 vegur' }, 
    statusCode: 400, 
    statusMessage: 'Bad Request' } 

ответ

0

Я думаю, вы могли бы быть запутанным два отдельных понятия - полезная нагрузка JWT против тела запроса HTTP.

scope определяется в полезной нагрузке ваших учетных данных JWT (Bearer ${token} в вашем примере кода). Более подробную информацию о JWT и областях можно найти here.

userId должно быть указано в теле запроса HTTP.

Я не уверен, что язык вы используете, но вот пример в Node.js:

var jwt = require('jsonwebtoken'); 
var token = jwt.sign({ scope: 'app' }, SECRET, { headers : { kid: KEY_ID } }); 

var request = require('request'); 
request.post({ 
    url: 'https://api.smooch.io/v1/appusers', 
    headers: { 
     'Authorization': `Bearer ${token}` 
    }, 
    json: { 
     userId: 'some_userId', 
     credentialRequired: true, 
     email: '[email protected]', 
     properties: { picture: 'https://s.gravatar.com/avatar/.....' } 
    } 
}); 
+0

Спасибо за указание на очевидное смешение из двух полезных нагрузок. Применение этого исправления помогло мне понять, что я также неправильно подавал полезную нагрузку на запрос. Похоже, это была проблема PEBCAK. – Matt

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

  • Нет связанных вопросов^_^