ホームページ  >  に質問  >  本文

Ghost CMS API への R インターフェイス

<p>組み込みの管理 API を使用して、R からローカルの Ghost CMS インスタンスに接続しようとしています。さまざまな言語での接続方法に関する優れたドキュメント (https://ghost.org/docs/admin-api/#token-authentication) がありますが、残念ながら R に関するドキュメントはありません。次のコードを作成しましたが、残念ながらテスト記事を作成しようとすると 401 エラーが発生します。ご協力をよろしくお願いいたします。 <br /><br />R コード:</p><p><strong></strong></p> <pre class="brush:php;toolbar:false;">api_admin_key <- 「xxxxxx:yyyyyyyyyyyyyyy」 api_admin_key <- unlist(strsplit(x = api_admin_key, Split = ":")) names(api_admin_key) <- c("id", "secret") # ヘッダーとペイロードを準備する iat <- as.integer(Sys.time()) ヘッダー <- list(alg = 'HS256'、typ = 'JWT'、kid = api_admin_key[["id"]]) # トークンを作成します(デコードシークレットを含む) ペイロード <- jose::jwt_claim(iat = iat, exp = iat 5 * 60、 aud = '/admin/') トークン <- jose::jwt_encode_hmac( クレーム = ペイロード、 Secret = charToRaw(api_admin_key[["secret"]]), サイズ = 256、 ヘッダー = ヘッダー ) # 認証されたリクエストを送信して投稿を作成します URL <- 'http://localhost:2368/ghost/api/admin/posts/' headers <- c('Authorization' = past("Ghost", token)) body <- list(posts = list( "タイトル" = 'Hello World', "html" = "<p>投稿コンテンツ。作業中です...</p>", 「ステータス」=「公開済み」 ) ) httr::POST(url, 体=体、 エンコード = "json"、 httr::add_headers(.headers = headers))</pre> <p><br /></p>
P粉134288794P粉134288794444日前533

全員に返信(1)返信します

  • P粉739706089

    P粉7397060892023-08-04 09:11:43

    jwt_encode_hmac() に渡した Secret= パラメータに問題があるようです。 charToRaw 関数は 16 進数を理解できず、ASCII 文字コードのみを使用します。変換を行うには、既存の質問の hex_to_raw 関数の 1 つを使用する必要があります。ここでは関数を使用して変換を行っています。

    リーリー

    また、ヘッダーに alg と typ を指定する必要はありません。これらは関数によって自動的に追加されるためです。したがって、次を使用してトークンを構築できます:

    リーリー

    https://jwt.io/ にあるデバッガーを使用して各トークンをテストしましたが、それらは同等であるようです。デバッガでは、16 進値「12bd18f2cd12」の Base64 エンコード値は「Er0Y8s0S」です。

    返事
    0
  • キャンセル返事