use*_*397 6 php translation access-token azure-marketplace
我已经在Azure Marketplace注册,我有一个客户端ID和客户端"秘密",但到目前为止我尝试过的所有内容都会导致"400 Bad Request"错误.非常感谢!
这是我一直在尝试的代码的相当基本的示例(我已经编辑了客户端ID和秘密值).我的操作是因为post变量可以通过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);
Run Code Online (Sandbox Code Playgroud)
我创建了一个易于使用且易于集成到任何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;
}
}
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16915 次 |
| 最近记录: |