PHP и API перевода Bing

Кто-нибудь имеет пример кода PHP, как использовать Microsoft Bing Translation API с их новой системой запросов на токен? Я зарегистрировался на Azure Marketplace, у меня есть идентификатор клиента и клиентский «секрет», но все, что я пробовал до сих пор, тем не менее приводит к ошибке «400 Bad Request». Огромное спасибо!

Вот довольно простой пример кода, который я пытался (я отредактировал идентификатор клиента и секретное значение). Я работаю с пониманием того, что почтовые переменные могут быть переданы через URL-запрос … Я надеюсь, что это правильно.

$authURL = 'http://datamarket.accesscontrol.windows.net/v2/OAuth2-13&grant_type=client_credentials&client_id={CLIENT_ID VALUE HERE}&client_secret={CLIENT_SECRET VALUE HERE}&scope=http://api.microsofttranslator.com'; $chpre = curl_init(); curl_setopt($chpre, CURLOPT_URL, $authURL ); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $xpre = curl_exec($chpre); $texttobetranslated = "الذي تقدمه"; $BingURL = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text=" . $texttobetranslated . "&from=ar&to=en"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $BingURL ); $x = curl_exec($ch); 

Solutions Collecting From Web of "PHP и API перевода Bing"

Почему вы не пытаетесь выполнить реализацию https://code.google.com/p/micrsoft-translator-php-wrapper/

Демонстрация приведена в http://renjith.co.in/translate/

Я создал небольшой PHP-класс, который прост в использовании и легко интегрируется в любой проект PHP. Вы можете найти его здесь . Это код:

  <?php class BingTranslation { public $clientID; public $clientSecret; public function __construct($cid, $secret) { $this->clientID = $cid; $this->clientSecret = $secret; } public function get_access_token() { //if access token is not expired and is stored in COOKIE if(isset($_COOKIE['bing_access_token'])) return $_COOKIE['bing_access_token']; // Get a 10-minute access token for Microsoft Translator API. $url = 'https://datamarket.accesscontrol.windows.net/v2/OAuth2-13'; $postParams = 'grant_type=client_credentials&client_id='.urlencode($this->clientID). '&client_secret='.urlencode($this->clientSecret).'&scope=http://api.microsofttranslator.com'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $postParams); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $rsp = curl_exec($ch); $rsp = json_decode($rsp); $access_token = $rsp->access_token; setcookie('bing_access_token', $access_token, $rsp->expires_in); return $access_token; } public function translate($word, $from, $to) { $access_token = $this->get_access_token(); $url = 'http://api.microsofttranslator.com/V2/Http.svc/Translate?text='.$word.'&from='.$from.'&to='.$to; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization:bearer '.$access_token)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $rsp = curl_exec($ch); preg_match_all('/<string (.*?)>(.*?)<\/string>/s', $rsp, $matches); return $matches[2][0]; } public function translate2($word, $from, $tos) { //translates 1 word to several languages //$tos is array of languages to translate to //returns array of translations as $result['en']=>'Hello' $access_token = $this->get_access_token(); $result[$from] = $word; foreach($tos as $to) { $url = 'http://api.microsofttranslator.com/V2/Http.svc/Translate?text=hello&from='.$from.'&to='.$to; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization:bearer '.$access_token)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $rsp = curl_exec($ch); preg_match_all('/<string (.*?)>(.*?)<\/string>/s', $rsp, $matches); $result[$to] = $matches[2][0]; } return $result; } } ?> 

это решение работало для меня довольно хорошо:

Использование BING Translator (версия 2) из ​​PHP

Как сказано в сообщении, CURL необходимо установить и запустить на сервере.

Привет, Свен

Пожалуйста, поместите этот код в свою часть заголовка. Это работает идеально для меня .. Наслаждайтесь этим

 <div id='MicrosoftTranslatorWidget' class='Light' style='color:white;background-color:#555555'></div> <script type='text/javascript'> setTimeout(function(){{ var s=document.createElement('script'); s.type='text/javascript'; s.charset='UTF-8'; s.src=((location && location.href && location.href.indexOf('https') == 0)?'https://ssl.microsofttranslator.com':'http://www.microsofttranslator.com')+'/ajax/v3/WidgetV3.ashx?siteData=ueOIGRSKkd965FeEGM5JtQ**&ctf=False&ui=true&settings=Manual&from='; var p=document.getElementsByTagName('head')[0]||document.documentElement; p.insertBefore(s,p.firstChild); }},0); </script>