Microsoft DataMarket platform retired on April 30, 2017並將Microsoft Translator API移至Azure。Microsoft Translator API遷移後的perl中的get_access_token
他們如何獲得新令牌C# here
我們的老過程一個完整的例子,但是,perl的,我有零經驗。它抓住下面的代碼使用post
令牌:
if (!$token or time > $expire - 5) {
$token = '';
console_log("Getting a new access token.") if ($debug);
my $response = $ua->post(
"https://datamarket.accesscontrol.windows.net/v2/OAuth2-13/",
[
client_id => $clientid,
client_secret => $clientsecret,
scope => 'http://api.microsofttranslator.com',
grant_type => 'client_credentials',
],
);
if ($response->is_success and $response->content =~ /^\{"token_type":".+?","access_token":"(.+?)","expires_in":"(\d+?)","scope":".+?"\}$/) {
$token = uri_escape("Bearer $1");
$expire = time + $2;
if ($fh) {
seek($fh, 0,0);
print $fh "expire:$expire\n";
print $fh "token:$token\n";
truncate($fh, tell($fh));
}
} else {
console_log("Failed to get Access Token.") if ($debug);
}
}
close $fh if($fh);
return $token;
}
我在想,這可能是因爲改變爲更新的URL和刮老CLIENT_ID和客戶端密鑰,像這樣簡單:
my $response = $ua->post(
"https://api.cognitive.microsoft.com/sts/v1.0/issueToken",
[
//Ocp-Apim-Subscription-Key => newazurekey
],
);
我有兩個問題,雖然
1)我已經找到並閱讀文檔的網站,一個說 OCP-APIM-認購-Key是一個頭,另一個是對米是代碼
Ocp-Apim-Subscription-Key => newazurekey
好嗎? Perl允許破折號?
2)收到測試API似乎並不具備
token_type:
access_token:
expires_in:
或scope:
像老 碼的響應
我指的是這種情況
if ($response->is_success and $response->content =~ /^\{"token_type":".+?","access_token":"(.+?)","expires_in":"(\d+?)","scope":".+?"\}$/)
的反應是這樣的
我在正確的軌道上正確地抓住令牌或將需要進行更多的更改?
'=>'(胖逗號)會自動引用lhs上的無用單詞,因此您需要'Ocp-Apim-Subscription-Key'來開始。你需要解碼響應嗎? –
@SinanÜnür仍然有幫助謝謝 – hellyale
請將您的輸出發佈爲文本。圖像不是很有用。 – Borodin