서명 생성하기
기본 URL은 쿼리 문자열이나 해시 매개변수를 제외한, 요청이 전송되는 대상 URL입니다. 여기서 올바른 프로토콜을 사용하는 것이 중요하므로, URL의
https:// 부분이 API에 실제로 전송되는 요청과 일치하는지 확인해야 합니다.
매개변수 수집
oauth_* 파라미터도 서명에 포함되어야 하므로 함께 수집해야 합니다. 다음은 요청 승인(authorizing a request)에서 가져온 파라미터입니다:
이 값들은 나중에 사용할 하나의 문자열로 인코딩되어야 합니다. 이 문자열을 만드는 절차는 다음과 같이 매우 구체적입니다:
- 서명에 포함될 모든 키와 값을 퍼센트 인코딩합니다.
- 인코딩된 키 기준으로 파라미터 리스트를 사전식(알파벳순)으로 정렬합니다 [1] [2].
- 각 키/값 쌍에 대해 다음을 수행합니다.
- 인코딩된 키를 출력 문자열에 추가합니다.
- ‘=’ 문자를 출력 문자열에 추가합니다.
- 인코딩된 값을 출력 문자열에 추가합니다.
- 남아 있는 키/값 쌍이 더 있다면, ‘&’ 문자를 출력 문자열에 추가합니다.
시그니처 베이스 문자열 생성
- HTTP 메서드를 대문자로 변환하고, 출력 문자열을 이 값으로 설정합니다.
- 출력 문자열에 ‘&’ 문자를 추가합니다.
- URL을 퍼센트 인코딩하고, 이를 출력 문자열에 추가합니다.
- 출력 문자열에 ‘&’ 문자를 추가합니다.
- 파라미터 문자열을 퍼센트 인코딩하고, 이를 출력 문자열에 추가합니다.
서명 키 가져오기
애플리케이션이 대리로 동작하는 계정을 식별하는 값은 OAuth token secret이라고 합니다. 이 값은 여러 가지 방법으로 얻을 수 있으며, 해당 방법들은 모두 access token 가져오기에 설명되어 있습니다.
다시 한 번 강조하지만, 이 값들은 애플리케이션 외부로 노출되지 않도록 엄격히 보호해야 합니다. 값이 유출되었다고 의심되면 토큰을 재발급하십시오(이 페이지의 토큰들은 실제 요청에서는 사용할 수 없도록 무효 처리되어 있습니다).
이 두 값은 signing key로 결합되어 서명을 생성하는 데 사용됩니다. signing key는 간단히 말해 percent encoded된 token secret입니다.
request token을 가져올 때와 같이 token secret을 아직 알 수 없는 플로우도 있다는 점에 유의하십시오. 이 경우 signing key는 percent encoded된 consumer secret 뒤에 앰퍼샌드 문자 ‘&’를 이어붙여 구성해야 합니다.
서명 계산하기
hash_hmac 함수에 설명되어 있습니다.
HMAC 서명 함수의 출력은 바이너리 문자열입니다. 이 값은 서명 문자열을 생성하기 위해 base64로 인코딩해야 합니다. 예를 들어, 이 페이지에 제시된 베이스 문자열과 서명 키를 사용했을 때의 출력은 2E CF 77 84 98 99 6D 0D DA 90 5D C7 17 7C 75 07 3F 3F CD 4E입니다. 이 값을 base64로 변환하면 이 요청에 대한 OAuth 서명이 됩니다: