Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bing使用JavaScript和Node.js翻译API_Javascript_Node.js_Api_Bing - Fatal编程技术网

Bing使用JavaScript和Node.js翻译API

Bing使用JavaScript和Node.js翻译API,javascript,node.js,api,bing,Javascript,Node.js,Api,Bing,我想要:在必应翻译服务的帮助下翻译文本 问题:我收到消息: Web令牌的末尾必须有签名。传入的令牌不存在 令牌末尾没有签名 编码前的我的令牌: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier=Subtitles&http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider=https://datam

我想要:在必应翻译服务的帮助下翻译文本

问题:我收到消息:

Web令牌的末尾必须有签名。传入的令牌不存在 令牌末尾没有签名

编码前的我的令牌:

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier=Subtitles&http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider=https://datamarket.accesscontrol.windows.net/&Audience=http://api.microsofttranslator.com&ExpiresOn=1411488480&Issuer=https://datamarket.accesscontrol.windows.net/&HMACSHA256=DsdsshfhhegefrgradfsdffqI=
var request = require('request');
var querystring = require('querystring');
/**
 * Demo for translating a 'Hello world' from en to uk with help of Bing Translator service
 */
(function() {
    var makeTranslateRequest = function(token) { //I provided you my token at this point
        var opts = {
            text: 'Hello world',
            from: 'en-gb',
            to: 'ru'
        };

        request.get({
            url: "http://api.microsofttranslator.com/v2/Http.svc/Translate?contentType=text/plain&from=" + opts.from + "&to=" + opts.to + "&text=" + opts.text,
            headers: {
                'Authorization': encodeURIComponent('Bearer' + token).replace(/'/g,"%27").replace(/"/g,"%22")
            }
        },function(err,res,body) {
            var translated = body;
            console.log('translated: ' + translated);
        });
    }

    /**
     * Get token and make translate request in a callback
     */
    var requestOpts = querystring.stringify({
        client_id: 'Subtitles',
        client_secret: 'X...................................s=',
        scope: 'http://api.microsofttranslator.com',
        grant_type: 'client_credentials'
    });

    request.post({
        encoding: 'utf8',
        url: "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13",
        body: requestOpts
    }, function(err, res, body){
        var decoded = decodeURIComponent(body.replace(/\+/g,  " "))
        var token = JSON.parse(decoded).access_token;
        makeTranslateRequest(token);
    });
})();
代码:

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier=Subtitles&http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider=https://datamarket.accesscontrol.windows.net/&Audience=http://api.microsofttranslator.com&ExpiresOn=1411488480&Issuer=https://datamarket.accesscontrol.windows.net/&HMACSHA256=DsdsshfhhegefrgradfsdffqI=
var request = require('request');
var querystring = require('querystring');
/**
 * Demo for translating a 'Hello world' from en to uk with help of Bing Translator service
 */
(function() {
    var makeTranslateRequest = function(token) { //I provided you my token at this point
        var opts = {
            text: 'Hello world',
            from: 'en-gb',
            to: 'ru'
        };

        request.get({
            url: "http://api.microsofttranslator.com/v2/Http.svc/Translate?contentType=text/plain&from=" + opts.from + "&to=" + opts.to + "&text=" + opts.text,
            headers: {
                'Authorization': encodeURIComponent('Bearer' + token).replace(/'/g,"%27").replace(/"/g,"%22")
            }
        },function(err,res,body) {
            var translated = body;
            console.log('translated: ' + translated);
        });
    }

    /**
     * Get token and make translate request in a callback
     */
    var requestOpts = querystring.stringify({
        client_id: 'Subtitles',
        client_secret: 'X...................................s=',
        scope: 'http://api.microsofttranslator.com',
        grant_type: 'client_credentials'
    });

    request.post({
        encoding: 'utf8',
        url: "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13",
        body: requestOpts
    }, function(err, res, body){
        var decoded = decodeURIComponent(body.replace(/\+/g,  " "))
        var token = JSON.parse(decoded).access_token;
        makeTranslateRequest(token);
    });
})();

我读了一些关于XML解码令牌的文章。所以我决定用XMLHTTPRequest替换节点请求模块

工作示例:

var request = require('request');
var querystring = require('querystring');
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;

/**
 * Demo for translating a 'Hello world' from en to uk with help of Bing Translator service
 */
(function() {
    //INSTEAD OF request.get({}) I use XMLHTTPRequest! Also I stoped to decoding/encoding token. That's the solution.
    var makeTranslateRequest = function(token) {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", "http://api.microsofttranslator.com/v2/Http.svc/Translate?from=en&to=ru&text=Good", true);
        xmlhttp.setRequestHeader('Authorization', 'Bearer ' + token);
        xmlhttp.onreadystatechange = function(){
            if (xmlhttp.readyState==4 && xmlhttp.status==200){
                console.log(xmlhttp.responseText);
            }
        }
        xmlhttp.send();
    }

    /**
     * Get token and make translate request in a callback
     */
    var requestOpts = querystring.stringify({
        client_id: 'Subtitles',
        client_secret: 'X............................s=',
        scope: 'http://api.microsofttranslator.com',
        grant_type: 'client_credentials'
    });

    request.post({
        encoding: 'utf8',
        url: "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13",
        body: requestOpts
    }, function(err, res, body) {
        var token = JSON.parse(body).access_token;
        makeTranslateRequest(token);
    });
})();

你确定要将hmac密钥发布到整个互联网?我已经匿名了