掲示板が存在しないというエラーになる

repoMK

2023.12.19既読 767

javascriptで

JWTの認証で特定の掲示板の投稿一覧を取得したいです。

掲示板IDをリクエストに直接入れたものがエラーになったので

${RequestURL}boards
で全体のリストを取得して、その中の最初の物のIDを試験的に取得して使用したコードもエラーになります。
(ID自体は取得出来ています)
(テストとして一旦、投稿ではなく掲示板自体のデータを取得するコードにしています)
const accessToken = await getAccessToken('board');
const RequestURL = 'https://www.worksapis.com/v1.0/';
const headers = {Authorization: `Bearer ${accessToken}`};
const ids = await axios.get(`${RequestURL}boards`, { headers });
 const boardId = ids.data.boards[0].boardId;
  
 const result = await axios.get(`${RequestURL}boards/${boardId}`, { headers });
Request failed with status code 404 { code: 'NOT_FOUND', description: 'Board does not exist.' }
ご助言頂ければ幸いです。
宜しくお願い致します。

コメント2

  • 업데이트 된 답글입니다.

    'name'

    掲示板IDが存在しない、またはアクセス権限がない場合に「Board does not exist.」というエラーが発生します。まず、掲示板IDが正しいか、そしてその掲示板にアクセスする権限があるかを確認してください。JWT認証を使用している場合は、Service Accountが適切な権限を持っているかも確認が必要です。\n\n以下は、JavaScriptを使用してJWT認証で特定の掲示板の投稿一覧を取得する基本的な手順です:\n\n1. JWTを生成します。\n2. JWTを使用してAccess Tokenを取得します。\n3. Access Tokenを使用して、指定した掲示板IDの投稿一覧を取得するAPIを呼び出します。\n\njavascript\nconst axios = require('axios');\nconst jwt = require('jsonwebtoken');\n\n// JWTを生成するための情報\nconst clientId = 'YOUR_CLIENT_ID';\nconst serverId = 'YOUR_SERVER_ID';\nconst privateKey = 'YOUR_PRIVATE_KEY';\n\n// JWTを生成\nconst token = jwt.sign({}, privateKey, {\n  algorithm: 'RS256',\n  expiresIn: '1h',\n  issuer: serverId,\n  subject: clientId,\n});\n\n// Access Tokenを取得するためのエンドポイント\nconst tokenEndpoint = 'https://authapi.worksmobile.com/b/{API_ID}/server/token';\n\n// Access Tokenを取得\naxios.post(tokenEndpoint, {\n  grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',\n  assertion: token\n})\n.then(response => {\n  const accessToken = response.data.access_token;\n\n  // 掲示板IDを指定して投稿一覧を取得\n  const boardId = 'YOUR_BOARD_ID'; // 正しい掲示板IDを設定\n  const postsEndpoint = `https://apis.worksmobile.com/r/{API_ID}/board/v2/boards/${boardId}/posts`;\n\n  return axios.get(postsEndpoint, {\n    headers: {\n      'Authorization': `Bearer ${accessToken}`\n    }\n  });\n})\n.then(response => {\n  console.log(response.data);\n})\n.catch(error => {\n  console.error(error);\n});\n\n\nこのコードは、適切なクライアントID、サーバーID、プライベートキー、API ID、掲示板IDを設定する必要があります。また、axiosとjsonwebtokenパッケージが必要です。\n\nエラーが発生する場合は、以下の点を確認してください:\n\n- 掲示板IDが正しいかどうか。\n- Service Accountに掲示板へのアクセス権限があるかどうか。\n- JWTの生成とAccess Tokenの取得が正しく行われているかどうか。\n\nこれらの点を確認し、問題が解決しない場合は、さらに詳細なログ情報や設定を確認する必要があります。

    2023.12.22

    0
  • 업데이트 된 답글입니다.

    repoMK 投稿者

    原因が判明しました。

    boardsAPIで取得したboardIdの終盤が、0になって(切り上げされている?)しまっているようです。

    axiosが使用しているjson-parseでは
    長い桁数の数値をパース出来ないようです。

    const JSONbig = require('json-bigint');
    axios.defaults.transformResponse = [(data) => JSONbig.parse(data)];

    として、別のパーサーを使用することで解決出来ました。

    2023.12.25

    0
前の投稿 セッション有効時間を管理者画面で制御する場合
次の投稿ユーザーリッチメニューの強制更新
リスト

まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。