Open1

axiosでCloud Runの認証をgetAccessTokenとかで突破しようとしてできなかった話

FBD TechFBD Tech

結論、素直にclient.request使うべし

無駄にaxiosにこだわり、とんでもない時間を浪費した
一応失敗コードを載せておく

const client = await auth.getClient();
const accessToken = await client.getAccessToken();
const client = await auth.getIdTokenClient(END_POINT_URL);
const accessToken = await client.getAccessToken();

とかで、

headers: {
  Authorization: `Bearer ${accessToken.token}`,
}

こういうのとか色々頑張ったけど無理だった

AxiosError: Request failed with status code 401 at settle
Error: No refresh token or refresh handler callback is set. at IdTokenClient.getAccessTokenAsync

などどうやっても通らない

結論、シンプルにclient.requestを使おう

const auth = new GoogleAuth();
const client = await auth.getIdTokenClient(END_POINT_URL);
const response = await client.request({
  method: "POST",
  url: URL,
  headers: {
    hoge: hoge,
  },
  data: {
    hogehoge: hogehoge,
  },
});

axiosと書き方は全く変わらない(多分普通に使う分には)
時間を無駄にしました...