通过javascript获取Bing Translation API访问令牌

时间:2014-06-12 09:24:17

标签: javascript ajax bing

我正在编写一个网络应用,并希望使用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();

1 个答案:

答案 0 :(得分:0)

我刚刚经历了同样的事情,不幸的是,似乎答案是在Javascript中执行此操作并不是适当的。 (除非它在服务器端运行 node.js 。)

要从Javascript(例如在网页上)获取访问令牌,您可能会尝试以明文形式发送clientIDclientSecret。因此,提供的示例显示了如何通过服务器端语言获取访问令牌。

所以我打算做的是在我的网站上提供PHP实现,并通过PHP脚本从我的网站获取访问令牌,然后将其发送到Translate API。

一旦我意识到我需要寻找的东西,我在http://webspeechapi.blogspot.ca/2013/04/how-to-use-new-bing-translator-api-with.html找到了所有步骤和示例代码的精彩摘要,其中包含服务器端PHP和Javascript以从中获取访问令牌,然后将其全部发送到翻译服务。