mail google example contactos php oauth yahoo-api

php - google - Obtener contactos usando la API de Contactos de Yahoo



google contacts api php (3)

La firma OAuth no es solo el secreto del consumidor. Yahoo tiene documentación sobre cómo firmar la solicitud y eso es lo que se incluye en el campo oauth_signature.

Seguí estos pasos "http://developer.yahoo.com/oauth/guide/oauth-auth-flow.html" y obtuve el token oaut y el GUID del usuario autenticado. Ahora trato de recuperar todos los contactos a través de GUID como he visto en las búsquedas para la web usando esta url "http://social.yahooapis.com/v1/user/GUID_HERE/contacts" y pasando los datos de autorización a través de los encabezados, pero acabo de recibir este respuesta:

<?xml version=''1.0'' encoding=''UTF-8''?><yahoo:errorxmlns:yahoo=''http://yahooapis.com/v1/base.rng'' xml:lang=''en-US''><yahoo:description>Please provide valid credentials. OAuth oauth_problem="signature_invalid", realm="yahooapis.com"</yahoo:description></yahoo:error><!-- ws129.socdir.sp2.yahoo.com uncompressed/chunked Tue Aug 28 06:22:40 PDT 2012 -->

Estoy ejecutando la solicitud usando cURL (PHP) como se escribe aquí "http://developer.yahoo.com/oauth/guide/oauth-make-request.html" (Lo he comprobado y estoy usando mi secreto de consumo como ouath_signature )

$header = array( ''GET http://social.yahooapis.com/v1/user/'' . $guid[1] . ''/contacts'', ''Authorization: OAuth realm="yahooapis.com", ''. ''oauth_consumer_key="''.$yahoo_consumer_key.''", ''. ''oauth_nonce="''.uniqid().''", ''. ''oauth_signature_method="HMAC-SHA1", ''. ''oauth_timestamp="''.time().''", ''. ''oauth_token="''.$ouathToken[1].''", ''. ''oauth_version="1.0", ''. ''oauth_signature="''.$yahoo_consumer_secret.''"''); curl_setopt_array($ch, array( CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => TRUE, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => 0, //CURLOPT_HTTPGET => true, CURLOPT_URL => ''http://social.yahooapis.com/v1/user/'' . $guid[1] . ''/contacts'', CURLOPT_HTTPHEADER => $header ));

Cualquiera puede ayudar?


Hay una excelente función de firma disponible aquí .


Parece que la firma creada es incorrecta. Para crear una firma, primero crea la cadena base que se crea al normalizar tu url.

Para obtener más información sobre la cadena base, visite http://developer.yahoo.com/oauth/guide/oauth-signing.html . http://oauth.net/core/1.0/#anchor16

Después de crear una cadena base, crea una clave de firma que se desarrolla al concatenar COSUMER SECRET y token secret con & .Like this,

$ signatureKey = CONSUMER_SECRET. "&". {yourtokensecret};

Luego, para crear la firma, pruebe este código: $ signature = urlencode (base64_encode (hash_hmac (''sha1'', {baseString}, $ signatureKey, true)));