Creación de una firma
Esta página explica cómo generar una firma HMAC-SHA1 de OAuth 1.0a para una solicitud HTTP. Esta firma será adecuada para pasar a la X API como parte de una solicitud autorizada, como se describe en autorización de una solicitud. La solicitud utilizada para demostrar la firma es un POST a https://api.x.com/1.1/statuses/update.json. La solicitud sin procesar se ve así:| Método HTTP | POST |
Recopilación de parámetros
A continuación, reúne todos los parámetros incluidos en la solicitud. Existen dos ubicaciones para estos parámetros adicionales: la URL (como parte del query string) y el cuerpo de la solicitud. La solicitud de ejemplo incluye un único parámetro en ambas ubicaciones:| 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 |
- Codifica por porcentaje cada clave y valor que se vaya a firmar.
- Ordena la lista de parámetros alfabéticamente [1] por clave codificada [2].
- Para cada par clave/valor:
- Añade la clave codificada a la cadena de salida.
- Añade el carácter ’=’ a la cadena de salida.
- Añade el valor codificado a la cadena de salida.
- Si quedan más pares clave/valor, añade un carácter ’&’ a la cadena de salida.
| 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 |
Creación de la signature base string
Los tres valores recopilados hasta ahora deben unirse para formar una sola cadena, a partir de la cual se generará la firma. Esto se llama la signature base string en la especificación de OAuth. Para codificar el método HTTP, la URL base y la cadena de parámetros en una sola cadena:- Convierte el método HTTP a mayúsculas y establece la cadena de salida igual a este valor.
- Añade el carácter ’&’ a la cadena de salida.
- Codifica por porcentaje la URL y añádela a la cadena de salida.
- Añade el carácter ’&’ a la cadena de salida.
- Codifica por porcentaje la cadena de parámetros y añádela a la cadena de salida.
Obtención de una signing key
Las últimas piezas de datos a recopilar son secretos que identifican la X app que realiza la solicitud y el usuario en cuyo nombre se realiza la solicitud. Es muy importante tener en cuenta que estos valores son increíblemente sensibles y nunca deben compartirse con nadie. El valor que identifica tu app ante X se llama consumer secret y se puede encontrar en la Developer Console viendo la página de detalles de la app. Este será el mismo para cada solicitud que envíe tu X app.| Consumer secret | kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw |
| OAuth token secret | LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE |
| Signing key | kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw&LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE |
Cálculo de la firma
Finalmente, la firma se calcula pasando la signature base string y la signing key al algoritmo de hash HMAC-SHA1. Los detalles del algoritmo se explican como la función hash_hmac. La salida de la función de firma HMAC es una cadena binaria. Esta debe codificarse en base64 para producir la cadena de firma. Por ejemplo, la salida dada la base string y la signing key proporcionadas en esta página es 2E CF 77 84 98 99 6D 0D DA 90 5D C7 17 7C 75 07 3F 3F CD 4E. Ese valor, cuando se convierte a base64, es la firma OAuth para esta solicitud:| Firma OAuth | Ls93hJiZbQ3akF3HF3x1Bz8/zU4= |