2012-05-10 11 views
0

私はBingトランスレータをEXT JSに接続しようとしています。私はアクセストークンを取得しようとするのに問題があります。私が何を試しても、私は400の悪い要求を得る。BingトランスレータEXT JSアクセストークン

これは私のコードです:

var clientId = encodeURI("<my id>"), 
    clientSecret = encodeURI("<my secret>"), 
    scope = encodeURI("http://api.microsofttranslator.com"), 
    grantType = encodeURI("client_credentials");   
    var params = {client_id  : clientId, 
        client_secret : clientSecret, 
        scope   : scope, 
        grant_type : grantType}; 
    Ext.Ajax.request({ 
       url  : "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13/", 
       method : "POST", 
       params : params, 
       success : function(response) { 
          alert("Success"); 
       }, 
       fail : function() { 
          alert("Fail"); 
       } 
    }); 

私はそれが可能ではないと思い始めています。私はこれがhttps://datamarket.accesscontrol.windows.net/v2/OAuth2-13/が許されない要求をしていると信じています。多分、このクライアント側をやっているのだろうか?あるいは、https urlがAjax.requestで動作しないかもしれません。どんな助けも高く評価されました。

答えて

0

ないExt.Ajaxに非常に精通し、これ試してください:あなたがそれらを持っているように、すなわち、HTTPS、クエリ文字列に入れ、代わりのparamsの代わりにPOST

  • のGETをやってみ

    1. を://?clientid = &など
  • 1

    ご提案のとおりです。サードパーティのサーバーにリクエストするにはJSONP + GETを使用する必要がありますが、Bing Translator API only accepts POST requestsが必要です。 JSONPとPOSTは互換性がないため、ブラウザーはあなたのリクエストにGETを使用しています(hereを参照)。

    Bing Translator APIの以前のバージョンはGETリクエストを受け入れましたが、これはもはや該当しません。解決策:アクセストークンと翻訳を取得してブラウザに戻すために、独自のサーバーサイドサービスを実装する必要があります。あなたは、

    $.ajax({ 
        type: "POST", 
        url: "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13", 
        data: {client_id:"bbcat",client_secret: "SECRETKEY", 
        scope: "http://api.microsofttranslator.com", grant_type: "client_credentials"}, 
        dataType: "jsonp", 
        success: function(data) { 
        console.log(data); 
        }, 
        error: function(data) { 
        console.error(data); 
        } 
    }); 
    
    0

    あなたはExt.Ajaxクロスドメインを使用することはできません:ところで

    が、これは同じ理由で動作しないアクセストークンを取得するためのjQueryを使用して、類似したコードですサードパーティのドメインからデータを取得するには、JSONPまたはフォームポストを使用する必要があります。