Ghost CMS API에 대한 R 인터페이스
P粉134288794
2023-08-03 12:45:37
<p>내장된 Admin 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, 분할 = ":"))
names(api_admin_key) <- c("id", "secret")
# 헤더와 페이로드 준비
iat <- as.integer(Sys.time())
헤더 <-
list(alg = 'HS256', typ = 'JWT', kid = api_admin_key[["id"]])
# 토큰 생성(디코딩 비밀 포함)
페이로드 <-
호세::jwt_claim(iat = iat,
특급 = iat + 5 * 60,
aud = '/관리자/')
토큰 <-
호세::jwt_encode_hmac(
클레임 = 페이로드,
비밀 = charToRaw(api_admin_key[["secret"]]),
크기 = 256,
헤더 = 헤더
)
# 게시물 작성을 위해 인증된 요청을 합니다.
URL <- 'http://localhost:2368/ghost/api/admin/posts/'
헤더 <- c('Authorization' = Paste("Ghost", token))
body <- list(게시물 = 목록(
"제목" = '안녕하세요 세계',
"html" = "<p>내 게시물 콘텐츠. 작업 진행 중...</p>",
"상태" = "게시됨"
)
)
httr::POST(URL,
몸=몸,
인코딩 = "json",
httr::add_headers(.headers = 헤더))</pre>
<p><br /></p>
jwt_encode_hmac()에 전달하는 secret= 매개변수에 문제가 있는 것 같습니다. charToRaw 함수는 16진수를 이해할 수 없으며 ASCII 문자 코드만 사용합니다. 변환을 수행하려면 기존 질문의 hex_to_raw 함수 중 하나를 사용해야 합니다. 여기서는 변환을 수행하는 함수를 사용하고 있습니다.
으아아아또한 헤더에 alg 및 typ를 지정할 필요가 없습니다. 이는 함수에 의해 자동으로 추가되기 때문입니다. 따라서 다음을 사용하여 토큰을 만들 수 있습니다.
으아아아https://jwt.io/의 디버거를 사용하여 각 토큰을 테스트한 결과 동일한 것으로 보입니다. 디버거에서 16진수 값 "12bd18f2cd12"의 Base64 인코딩 값은 "Er0Y8s0S"입니다.