서명 생성하기
| HTTP Method | POST |
https:// 부분이 API에 실제로 전송되는 요청과 일치하는지 확인해야 합니다.
매개변수 수집
oauth_* 파라미터도 서명에 포함되어야 하므로 함께 수집해야 합니다. 다음은 요청 승인(authorizing a request)에서 가져온 파라미터입니다:
| status | Hello Ladies + Gentlemen, a signed OAuth request! |
| include_entities | true |
| oauth_consumer_key | xvz1evFS4wEEPTGEFPHBog |
| oauth_nonce | kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg |
| oauth_signature_method | HMAC-SHA1 |
| oauth_timestamp | 1318622958 |
| oauth_token | 370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb |
| oauth_version | 1.0 |
- 서명에 포함될 모든 키와 값을 퍼센트 인코딩합니다.
- 인코딩된 키 기준으로 파라미터 리스트를 사전식(알파벳순)으로 정렬합니다 [1] [2].
- 각 키/값 쌍에 대해 다음을 수행합니다.
- 인코딩된 키를 출력 문자열에 추가합니다.
- ‘=’ 문자를 출력 문자열에 추가합니다.
- 인코딩된 값을 출력 문자열에 추가합니다.
- 남아 있는 키/값 쌍이 더 있다면, ‘&’ 문자를 출력 문자열에 추가합니다.
| status | Hello Ladies + Gentlemen, a signed OAuth request! |
|---|---|
include_entities | true |
oauth_consumer_key | xvz1evFS4wEEPTGEFPHBog |
oauth_nonce | kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg |
oauth_signature_method | HMAC-SHA1 |
oauth_timestamp | 1318622958 |
oauth_token | 370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb |
oauth_version | 1.0 |
시그니처 베이스 문자열 생성
- HTTP 메서드를 대문자로 변환하고, 출력 문자열을 이 값으로 설정합니다.
- 출력 문자열에 ‘&’ 문자를 추가합니다.
- URL을 퍼센트 인코딩하고, 이를 출력 문자열에 추가합니다.
- 출력 문자열에 ‘&’ 문자를 추가합니다.
- 파라미터 문자열을 퍼센트 인코딩하고, 이를 출력 문자열에 추가합니다.
서명 키 가져오기
| Consumer secret | kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw |
| OAuth token secret | LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE |
| Signing key | kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw&LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE |
서명 계산하기
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 서명이 됩니다:
| OAuth signature | Ls93hJiZbQ3akF3HF3x1Bz8/zU4= |