我正在编写一个网络应用,并希望使用Bing翻译API,因为谷歌收费。我已经在Azure Marketplace上注册并注册了一个应用程序。问题是我还没有找到如何获得我需要的实际访问令牌。我在plunker中尝试了一些AJAX调用,但所有这些调用都在请求的资源墙上出现了“No'Access-Control-Allow-Origin”标题。我在获取访问令牌时发现的唯一指令都是使用不同的语言(php,C#,Java),而我真的需要它是Javascript。有没有办法以这种方式获取访问令牌?
目前我正试图以这种方式调用服务:
function createCORSRequest(method, url) {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// Check if the XMLHttpRequest object has a "withCredentials" property.
// "withCredentials" only exists on XMLHTTPRequest2 objects.
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
// Otherwise, check if XDomainRequest.
// XDomainRequest only exists in IE, and is IE's way of making CORS requests.
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
// Otherwise, CORS is not supported by the browser.
xhr = null;
}
return xhr;
};
var xhr = createCORSRequest('POST', 'https://datamarket.accesscontrol.windows.net/v2/OAuth2-13?client_id=[CLIENT_ID_HERE]&client_secret=[CLIENT_SECRET_HERE]&scope=http://api.microsofttranslator.com&grant_type=client_credentials&');
xhr.onloadend = function(data){
alert(JSON.stringify(data));
};
xhr.send();
答案 0 :(得分:0)
我刚刚经历了同样的事情,不幸的是,似乎答案是在Javascript中执行此操作并不是适当的。 (除非它在服务器端运行 node.js 。)
要从Javascript(例如在网页上)获取访问令牌,您可能会尝试以明文形式发送clientID
和clientSecret
。因此,提供的示例显示了如何通过服务器端语言获取访问令牌。
所以我打算做的是在我的网站上提供PHP实现,并通过PHP脚本从我的网站获取访问令牌,然后将其发送到Translate API。
一旦我意识到我需要寻找的东西,我在http://webspeechapi.blogspot.ca/2013/04/how-to-use-new-bing-translator-api-with.html找到了所有步骤和示例代码的精彩摘要,其中包含服务器端PHP和Javascript以从中获取访问令牌,然后将其全部发送到翻译服务。