사용자별 API 키를 얻는 방법에 대한 가이드를 따르고 있습니다: User API keys specification.
다음 단계들을 수행했습니다: 클라이언트가 공개/비공개 키 쌍을 생성하고 리턴 URL을 반환한 후, Discourse 경로로 이동하여 사용자가 앱 사용을 Discourse에 승인하고, Discourse가 API 키를 생성합니다.
하지만 Discourse가 리턴 URL의 "payload"로 API 키를 보내올 때, 해당 키가 작동하지 않습니다. 복호화를 시도해 보았지만 실패합니다.
해당 키를 표준 JavaScript 복호화(예: 여기 답변에 있는 것)에 적용해 보면 “length is invalid” 오류가 발생합니다. (사용하는 JavaScript 복호화 방법에 따라 DATA_LEN_NOT_EQUAL_TO_MOD_LEN 오류가 발생하기도 합니다)
이를 해결하는 방법에 대한 아이디어가 있을까요?
이것은 매우 중요한 기능 부분이라 도움이 정말로 절실합니다.
payload에 제공된 키를 어떤 방식으로 변경해야 하는가요? payload에 제공된 키가 작동하지 않는 것이 가능한가요?
조금 더 자세한 내용:
전체적인 방법이 올바른 것 같습니다. Discourse는 사용자별 키를 얻는 또 다른 방법을 제공하고 있으며, 저는 그 키를 성공적으로 복호화할 수 있기 때문입니다:
Discourse에 대한 요청에서 리다이렉트 URL을 생략하면, Discourse는 리다이렉트를 수행하지 않습니다. 대신 화면에 키를 출력하여 사용자가 복사하도록 합니다.
해당 키는 "payload"에 제공된 키보다 짧습니다(약 684자이며, payload 키는 약 762자입니다). 그리고 그 키는 잘 작동합니다—JavaScript를 사용하여 문제없이 복호화할 수 있습니다.
하지만 사용자에게 API 키를 복사하여 붙여넣도록 요청하는 것은 사용자들에게 혼란을 줍니다—올바른 플로우는 payload에서 키를 가져오는 것입니다. 그 payload 키를 어떻게 작동시킬 수 있을까요?