Получение токена доступа Bing Translation API через javascript

Я пишу веб-приложение и хотел бы использовать API перевода Bing, так как Google взимает плату за свои услуги. Я зарегистрировался в Azure Marketplace и зарегистрировал приложение. Проблема в том, что я не нашел, как получить нужный мне токен доступа. Я попробовал несколько вызовов AJAX в plunker, но все они попали в заголовок «Нет заголовка «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();

person Valyrion    schedule 12.06.2014    source источник


Ответы (1)


Я только что прошел через то же самое, и, к сожалению, похоже, что ответ заключается в том, что неуместно делать это в 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 для извлечения токена доступа из него, а затем отправляет все это в службу Translate.

person Appurist - Paul W    schedule 07.11.2014