Signature 생성
이 페이지에서는 HTTP 요청에 대한 OAuth 1.0a HMAC-SHA1 서명을 생성하는 방법을 설명합니다. 이 서명은 요청 승인에 설명된 대로 승인된 요청의 일부로 X API에 전달하기에 적합합니다. 서명을 시연하는 데 사용된 요청은 https://api.x.com/1.1/statuses/update.json에 대한 POST입니다. 원시 요청은 다음과 같습니다:| HTTP 메서드 | POST |
매개변수 수집
다음으로, 요청에 포함된 모든 매개변수를 수집합니다. 이러한 추가 매개변수에는 두 가지 위치가 있습니다 - URL(쿼리 문자열의 일부) 및 요청 본문. 예시 요청에는 두 위치 모두에 단일 매개변수가 포함되어 있습니다:| 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 |
- 서명될 모든 키와 값을 퍼센트 인코딩합니다.
- 인코딩된 키 [2]를 기준으로 매개변수 목록을 알파벳순으로 [1] 정렬합니다.
- 각 키/값 쌍에 대해:
- 인코딩된 키를 출력 문자열에 추가합니다.
- ’=’ 문자를 출력 문자열에 추가합니다.
- 인코딩된 값을 출력 문자열에 추가합니다.
- 남은 키/값 쌍이 더 있는 경우 ’&’ 문자를 출력 문자열에 추가합니다.
| 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 |
Signature base string 생성
지금까지 수집한 세 개의 값은 서명이 생성될 단일 문자열로 결합되어야 합니다. 이를 OAuth 명세에서는 signature base string이라고 합니다. HTTP 메서드, base URL 및 parameter string을 단일 문자열로 인코딩하려면:- HTTP 메서드를 대문자로 변환하고 출력 문자열을 이 값과 동일하게 설정합니다.
- ’&’ 문자를 출력 문자열에 추가합니다.
- URL을 퍼센트 인코딩하고 출력 문자열에 추가합니다.
- ’&’ 문자를 출력 문자열에 추가합니다.
- parameter string을 퍼센트 인코딩하고 출력 문자열에 추가합니다.
서명 키 얻기
수집해야 할 마지막 데이터는 요청을 하는 X 앱과 요청이 대신하는 사용자를 식별하는 시크릿입니다. 이러한 값은 매우 민감하며 절대 아무와 공유해서는 안 된다는 점에 유의하는 것이 매우 중요합니다. X에 앱을 식별하는 값은 consumer secret이라고 하며 Developer Console에서 앱 세부 정보 페이지를 통해 찾을 수 있습니다. 이 값은 X 앱이 보내는 모든 요청에 대해 동일합니다.| Consumer secret | kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw |
| OAuth token secret | LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE |
| 서명 키 | kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw&LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE |
서명 계산
마지막으로, signature base string과 서명 키를 HMAC-SHA1 해싱 알고리즘에 전달하여 서명이 계산됩니다. 알고리즘의 세부 사항은 hash_hmac 함수로 설명됩니다. HMAC 서명 함수의 출력은 이진 문자열입니다. 이는 서명 문자열을 생성하기 위해 base64 인코딩되어야 합니다. 예를 들어, 이 페이지에서 제공된 base string과 서명 키에 대한 출력은 2E CF 77 84 98 99 6D 0D DA 90 5D C7 17 7C 75 07 3F 3F CD 4E입니다. 그 값을 base64로 변환한 것이 이 요청에 대한 OAuth 서명입니다:| OAuth 서명 | Ls93hJiZbQ3akF3HF3x1Bz8/zU4= |