Код доступа OAuth, работающий на Localhost, но не работающий на сервере (например, nodechef)
Я разрабатываю веб-приложение с использованием React и Meteor JS.
На моем локальном хосте я бы вызывал Oauth API Patreon со ссылкой для перенаправления, и после того, как пользователь войдет в систему и разрешит доступ к своему профилю, пользователь будет перенаправлен на http://localhost:3000/. Оттуда я получаю код доступа из URL, а затем выполняю запросы к API, и он будет работать без сбоев.
Поскольку он работает, я решил протестировать его на реальном сервере, таком как nodechef. К моему удивлению, после получения кода с URL-адреса и его использования, чтобы попытаться запросить пути Patron OAuth с помощью:
var promise = patreonOAuthClient
.getTokens(oauthGrantCode, redirectURL)
var result = await promise.then(function(tokensResponse) {
}
......
catch(function(err) {
console.error('error!', err)
})
Я получил бы следующую ошибку на сервере (nodechef), но не на моем локальном сервере:
error! Body {
url: 'https://www.patreon.com/api/oauth2/token',
statusText: 'UNAUTHORIZED',
headers:
Headers {
_headers:
{ date: [Array],
'content-type': [Array],
'content-length': [Array],
connection: [Array],
'set-cookie': [Array],
'cache-control': [Array],
pragma: [Array],
'x-patreon-uuid': [Array],
'strict-transport-security': [Array],
'x-content-type-options': [Array],
'expect-ct': [Array],
server: [Array],
'cf-ray': [Array] } },
ok: false,
body:
PassThrough {
_readableState:
ReadableState {
objectMode: false,
highWaterMark: 16384,
buffer: [Object],
length: 26,
pipesCount: 0,
flowing: null,
ended: true,
endEmitted: false,
reading: false,
sync: false,
needReadable: false,
emittedReadable: true,
readableListening: false,
resumeScheduled: false,
destroyed: false,
defaultEncoding: 'utf8',
awaitDrain: 0,
readingMore: false,
decoder: null,
encoding: null },
readable: true,
domain: null,
_events: { end: [Object], prefinish: [Function: prefinish] },
_eventsCount: 2,
_maxListeners: undefined,
_writableState:
WritableState {
objectMode: false,
highWaterMark: 16384,
finalCalled: false,
needDrain: false,
ending: true,
ended: true,
finished: true,
destroyed: false,
decodeStrings: true,
defaultEncoding: 'utf8',
length: 0,
writing: false,
corked: 0,
sync: false,
bufferProcessing: false,
onwrite: [Function: bound onwrite],
writecb: null,
writelen: 0,
bufferedRequest: null,
lastBufferedRequest: null,
pendingcb: 0,
prefinished: true,
errorEmitted: false,
bufferedRequestCount: 0,
corkedRequestsFree: [Object] },
writable: false,
allowHalfOpen: true,
_transformState:
{ afterTransform: [Function: bound afterTransform],
needTransform: false,
transforming: false,
writecb: null,
writechunk: null,
writeencoding: 'buffer' } },
bodyUsed: false,
size: 0,
timeout: 0,
_raw: [],
_abort: false }
Как мне это решить?
Или это то, что я должен сообщить nodechef для них, чтобы настроить что-то на их конце???