SetContext не настраивает вызов токена перед вызовом API, когда истекает токенJavascript

Форум по Javascript
Ответить
Anonymous
 SetContext не настраивает вызов токена перед вызовом API, когда истекает токен

Сообщение Anonymous »

Token API должен быть вызван до API GraphQL, но его одновременно называют < /p>
Я получаю заголовки внутри setContext
Inside OutsAuthHeaders я называю API на Получите токен обновления < /p>

Код: Выделить всё

const authLink = setContext((_, { headers }) => {
return new Promise( async (resolve, reject) => {
// get the authentication headers
const updatedHeaders = await commonAuthHeaders(headers)
resolve ({
headers: updatedHeaders
}
)
});
});

export const client = new ApolloClient({
link: from([authLink, errorLink , httpLink]),
cache,
connectToDevTools: process.env.NODE_ENV !== "production",
defaultOptions: {
watchQuery: {
fetchPolicy: "network-only",
nextFetchPolicy: "network-only",
},
},
});

export async function commonAuthHeaders(headers) {
const supportedLoginModes = ["autodesk", "google"]

const logInMode = getCookie("__login_mode");
let access_token = getCookie("__bauhub_token");
const refresh_token = getCookie("__bauhub_refresh_token")
const lang = getCookie("__bauhub_lang");
const currentOrgId = getCookie("__current_organization");
const pluginType = getCookie("pluginType")

const newHeaders = {
...headers,
"Apollo-Require-Preflight": true,
};

if (lang) newHeaders["Accept-Language"] = lang;

if (supportedLoginModes.includes(logInMode)) {

if (logInMode === "autodesk" && !access_token && refresh_token) {
access_token = await refreshAutodeskAccessToken()
}

if (logInMode === "google" && !access_token) {
access_token = await getFirebaseToken()
}

if (access_token && currentOrgId) newHeaders.organizationId = currentOrgId;

if (logInMode && access_token) newHeaders.logInMode = logInMode;

if (pluginType) newHeaders.pluginType = pluginType

newHeaders.authorization = access_token ? `Bearer ${access_token}` : "";
return newHeaders
} else {
return headers
}
}
Первый токен должен быть вызван, а затем после получения токена следующий вызов GraphQL должен быть установлен.

Подробнее здесь: https://stackoverflow.com/questions/794 ... en-expires
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»