Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/06/2013, 09:07
eugeniobcn
 
Fecha de Ingreso: abril-2008
Mensajes: 72
Antigüedad: 16 años, 9 meses
Puntos: 0
microsofttraslate error

hola wenas
estoy tratando de implantar un traductor en tiempo real en un chat que hice en php
quiero usar la api de microsoft traslator

me registre y regristre la aplicacion asi que tengo el clientID y clientSecret

luego baje un codigo de ejemplo de la aplicacion
pues este codigo me da el siguiente error

Exception-ACS50012: Authentication failed. Trace ID: ab39219b-6a5e-4773-bb19-ff6663f7f418 Correlation ID: e1260f57-2fc8-4250-9cfd-241066ecf604 Timestamp: 2013-06-15 15:04:28Z


el codigo de ejemplo es este

tambien probe otros codigos similares con el mismo error.

alguien tubo este problema? llevo desde ayer con el asunto buscando informacion y no lo encuentro en ningun sitio

gracias




Código PHP:
class AccessTokenAuthentication {
    
/*
     * Get the access token.
     *
     * @param string $grantType    Grant type.
     * @param string $scopeUrl     Application Scope URL.
     * @param string $clientID     Application client ID.
     * @param string $clientSecret Application client ID.
     * @param string $authUrl      Oauth Url.
     *
     * @return string.
     */
    
function getTokens($grantType$scopeUrl$clientID$clientSecret$authUrl){
        try {
            
//Initialize the Curl Session.
            
$ch curl_init();
            
//Create the request Array.
            
$paramArr = array (
                 
'grant_type'    => $grantType,
                 
'scope'         => $scopeUrl,
                 
'client_id'     => $clientID,
                 
'client_secret' => $clientSecret
            
);
            
//Create an Http Query.//
            
$paramArr http_build_query($paramArr);
            
//Set the Curl URL.
            
curl_setopt($chCURLOPT_URL$authUrl);
            
//Set HTTP POST Request.
            
curl_setopt($chCURLOPT_POSTTRUE);
            
//Set data to POST in HTTP "POST" Operation.
            
curl_setopt($chCURLOPT_POSTFIELDS$paramArr);
            
//CURLOPT_RETURNTRANSFER- TRUE to return the transfer as a string of the return value of curl_exec().
            
curl_setopt ($chCURLOPT_RETURNTRANSFERTRUE);
            
//CURLOPT_SSL_VERIFYPEER- Set FALSE to stop cURL from verifying the peer's certificate.
            
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
            
//Execute the  cURL session.
            
$strResponse curl_exec($ch);
            
//Get the Error Code returned by Curl.
            
$curlErrno curl_errno($ch);
            if(
$curlErrno){
                
$curlError curl_error($ch);
                throw new 
Exception($curlError);
            }
            
//Close the Curl Session.
            
curl_close($ch);
            
//Decode the returned JSON string.
            
$objResponse json_decode($strResponse);
            if (
$objResponse->error){
                throw new 
Exception($objResponse->error_description);
            }
            return 
$objResponse->access_token;
        } catch (
Exception $e) {
            echo 
"Exception-".$e->getMessage();
        }
    }
}

/*
 * Class:HTTPTranslator
 *
 * Processing the translator request.
 */
Class HTTPTranslator {
    
/*
     * Create and execute the HTTP CURL request.
     *
     * @param string $url        HTTP Url.
     * @param string $authHeader Authorization Header string.
     * @param string $postData   Data to post.
     *
     * @return string.
     *
     */
    
function curlRequest($url$authHeader) {
        
//Initialize the Curl Session.
        
$ch curl_init();
        
//Set the Curl url.
        
curl_setopt ($chCURLOPT_URL$url);
        
//Set the HTTP HEADER Fields.
        
curl_setopt ($chCURLOPT_HTTPHEADER, array($authHeader,"Content-Type: text/xml"));
        
//CURLOPT_RETURNTRANSFER- TRUE to return the transfer as a string of the return value of curl_exec().
        
curl_setopt ($chCURLOPT_RETURNTRANSFERTRUE);
        
//CURLOPT_SSL_VERIFYPEER- Set FALSE to stop cURL from verifying the peer's certificate.
        
curl_setopt ($chCURLOPT_SSL_VERIFYPEERFalse);
        
//Execute the  cURL session.
        
$curlResponse curl_exec($ch);
        
//Get the Error Code returned by Curl.
        
$curlErrno curl_errno($ch);
        if (
$curlErrno) {
            
$curlError curl_error($ch);
            throw new 
Exception($curlError);
        }
        
//Close a cURL session.
        
curl_close($ch);
        return 
$curlResponse;
    }
}

try {
    
//Client ID of the application.
    
$clientID       "mi_clientID";
    
//Client Secret key of the application.
    
$clientSecret "mi_clientSecre";
    
//OAuth Url.
    
$authUrl      "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13/";
    
//Application Scope Url
    
$scopeUrl     "http://api.microsofttranslator.com";
    
//Application grant type
    
$grantType    "client_credentials";

    
//Create the AccessTokenAuthentication object.
    
$authObj      = new AccessTokenAuthentication();
    
//Get the Access token.
    
$accessToken  $authObj->getTokens($grantType$scopeUrl$clientID$clientSecret$authUrl);
    
//Create the authorization Header string.
    
$authHeader "Authorization: Bearer "$accessToken;

    
//Set the params.//
    
$fromLanguage "en";
    
$toLanguage   "es";
    
$inputStr     "the best machine translation technology cannot always provide translations tailored to a site or users like a human";
    
$contentType  'text/plain';
    
$category     'general';
    
    
$params "text=".urlencode($inputStr)."&to=".$toLanguage."&from=".$fromLanguage;
    
$translateUrl "http://api.microsofttranslator.com/v2/Http.svc/Translate?$params";
    
    
//Create the Translator Object.
    
$translatorObj = new HTTPTranslator();
    
    
//Get the curlResponse.
    
$curlResponse $translatorObj->curlRequest($translateUrl$authHeader);
    
    
//Interprets a string of XML into an object.
    
$xmlObj simplexml_load_string($curlResponse);
    foreach((array)
$xmlObj[0] as $val){
        
$translatedStr $val;
    }
    echo 
"<table border=2px>";
    echo 
"<tr>";
    echo 
"<td><b>From $fromLanguage</b></td><td><b>To $toLanguage</b></td>";
    echo 
"</tr>";
    echo 
"<tr><td>".$inputStr."</td><td>".$translatedStr."</td></tr>";
    echo 
"</table>";
} catch (
Exception $e) {
    echo 
"Exception: " $e->getMessage() . PHP_EOL;
}


/*
 * Create and execute the HTTP CURL request.
 * 
 * @param string $url        HTTP Url.
 * @param string $authHeader Authorization Header string.
 * @param string $postData   Data to post.
 *
 * @return string.
 *
 */
function curlRequest($url$authHeader$postData=''){
    
//Initialize the Curl Session.
    
$ch curl_init();
    
//Set the Curl url.
    
curl_setopt ($chCURLOPT_URL$url);
    
//Set the HTTP HEADER Fields.
    
curl_setopt ($chCURLOPT_HTTPHEADER, array($authHeader,"Content-Type: text/xml"));
    
//CURLOPT_RETURNTRANSFER- TRUE to return the transfer as a string of the return value of curl_exec().
    
curl_setopt ($chCURLOPT_RETURNTRANSFERTRUE);
    
//CURLOPT_SSL_VERIFYPEER- Set FALSE to stop cURL from verifying the peer's certificate.
    
curl_setopt ($chCURLOPT_SSL_VERIFYPEERFalse);
    if(
$postData) {
        
//Set HTTP POST Request.
        
curl_setopt($chCURLOPT_POSTTRUE);
        
//Set data to POST in HTTP "POST" Operation.
        
curl_setopt($chCURLOPT_POSTFIELDS$postData);
    }
    
//Execute the  cURL session. 
    
$curlResponse curl_exec($ch);
    
//Get the Error Code returned by Curl.
    
$curlErrno curl_errno($ch);
    if (
$curlErrno) {
        
$curlError curl_error($ch);
        throw new 
Exception($curlError);
    }
    
//Close a cURL session.
    
curl_close($ch);
    return 
$curlResponse;